﻿(function (e, t) {
    function r(e) {
        return -Math.cos(e * Math.PI) / 2 + .5
    }
    function u(e) {
        return typeof e == "string" ? document.getElementById(e) : e
    }
    function h(e, t) {
        return e.substr(t, 1)
    }
    function p(e, t, n) {
        var r = e + (t - e) * n;
        return isNaN(r) ? r : r.toFixed(3)
    }
    function d(e, t, n) {
        var r = 3,
            i, s = [];
        e = m(e);
        t = m(t);
        while (r--) {
            i = ~~ (e[r] + (t[r] - e[r]) * n);
            s.push(i < 0 ? 0 : i > 255 ? 255 : i)
        }
        return "rgb(" + s.join(",") + ")"
    }
    function v(e) {
        var t = parseFloat(e),
            n = e.replace(/^[\-\d\.]+/, "");
        return isNaN(t) ? {
            value: n,
            func: d,
            unit: ""
        } : {
            value: t,
            func: p,
            unit: n
        }
    }
    function m(e) {
        var t = [],
            n = 3;
        if (h(e, 0) == "r") {
            e = e.match(/\d+/g);
            while (n--) t.push(~~e[n])
        } else {
            e.length == 4 && (e = "#" + h(e, 1) + h(e, 1) + h(e, 2) + h(e, 2) + h(e, 3) + h(e, 3));
            while (n--) t.push(parseInt(e.substr(1 + n * 2, 2), 16))
        }
        return t
    }
    function g(e) {
        var t, n = {}, r = o.length,
            i;
        s.innerHTML = '<div style="' + e + '"></div>';
        t = s.childNodes[0].style;
        while (r--) if (i = t[o[r]]) n[o[r]] = v(i);
        return n
    }
    function y(e, t, s) {
        e = u(e);
        s = s || {};
        var o = g(t),
            f = a(e),
            h, p = {}, d = +(new Date),
            m = isNaN(s.duration) ? n : s.duration,
            y = s.easing || r,
            w = d + m,
            E, S;
        if (!f) return;
        for (h in o) h !== "opacity" ? p[h] = v(f[h]) : p[h] = v(c(f));
        e[i] && clearInterval(e[i]);
        e[i] = E = setInterval(function () {
            var t = +(new Date),
                n = t > w ? 1 : (t - d) / m;
            for (h in o) {
                S = o[h].func(p[h].value, o[h].value, y(n)) + o[h].unit;
                h === "opacity" ? l(e, S) : e.style[h] = S
            }
            if (t > w) {
                b(e);
                s.after && s.after()
            }
        }, 10)
    }
    function b(e) {
        e = u(e);
        if (e[i]) {
            clearInterval(e[i]);
            e[i] = null
        }
    }
    var n = 400,
        i = "emile" + (new Date).getTime(),
        s = document.createElement("div"),
        o = "backgroundColor borderBottomColor borderBottomWidth borderLeftColor borderLeftWidth borderRightColor borderRightWidth borderSpacing borderTopColor borderTopWidth bottom color fontSize fontWeight height left letterSpacing lineHeight marginBottom marginLeft marginRight marginTop maxHeight maxWidth minHeight minWidth opacity outlineColor outlineOffset outlineWidth paddingBottom paddingLeft paddingRight paddingTop right textIndent top width wordSpacing zIndex".split(" "),
        a = function (e) {
            return e.currentStyle
        };
    document.defaultView && typeof document.defaultView.getComputedStyle != "undefined" && (a = function (e) {
        return e ? document.defaultView.getComputedStyle(e, null) : !1
    });
    var f = /alpha\s*\(\s*opacity\s*=\s*([^\)]+)\)/,
        l = function (e, t) {
            e.style.opacity = t
        }, c = function (e) {
            return e.opacity
        };
    if (typeof s.style.filter == "string" && typeof s.style.opacity != "string") {
        l = function (e, t) {
            var n = e.style;
            e.currentStyle && !e.currentStyle.hasLayout && (n.zoom = 1);
            if (f.test(n.filter)) {
                t = t >= .9999 ? "" : "alpha(opacity=" + t * 100 + ")";
                n.filter = n.filter.replace(f, t)
            } else n.filter += " alpha(opacity=" + t * 100 + ")"
        };
        c = function (e) {
            var t = e.filter.match(f);
            return (t ? t[1] / 100 : 1) + ""
        }
    }
    t[e] = y;
    t[e].stopAnimation = b
})("emile", this);
(function (e, t, n) {
    function o(e, n) {
        var r = t.createElement(e || "div"),
            i;
        for (i in n) r[i] = n[i];
        return r
    }
    function u(e, t, n) {
        n && !n.parentNode && u(e, n);
        e.insertBefore(t, n || null);
        return e
    }
    function f(e, t, n, r) {
        var o = ["opacity", t, ~~ (e * 100), n, r].join("-"),
            u = .01 + n / r * 100,
            f = Math.max(1 - (1 - e) / t * (100 - u), e),
            l = s.substring(0, s.indexOf("Animation")).toLowerCase(),
            c = l && "-" + l + "-" || "";
        if (!i[o]) {
            a.insertRule("@" + c + "keyframes " + o + "{" + "0%{opacity:" + f + "}" + u + "%{opacity:" + e + "}" + (u + .01) + "%{opacity:1}" + (u + t) % 100 + "%{opacity:" + e + "}" + "100%{opacity:" + f + "}" + "}", 0);
            i[o] = 1
        }
        return o
    }
    function l(e, t) {
        var i = e.style,
            s, o;
        if (i[t] !== n) return t;
        t = t.charAt(0).toUpperCase() + t.slice(1);
        for (o = 0; o < r.length; o++) {
            s = r[o] + t;
            if (i[s] !== n) return s
        }
    }
    function c(e, t) {
        for (var n in t) e.style[l(e, n) || n] = t[n];
        return e
    }
    function h(e) {
        for (var t = 1; t < arguments.length; t++) {
            var r = arguments[t];
            for (var i in r) e[i] === n && (e[i] = r[i])
        }
        return e
    }
    function p(e) {
        var t = {
            x: e.offsetLeft,
            y: e.offsetTop
        };
        while (e = e.offsetParent) {
            t.x += e.offsetLeft;
            t.y += e.offsetTop
        }
        return t
    }
    var r = ["webkit", "Moz", "ms", "O"],
        i = {}, s, a = function () {
            var e = o("style");
            u(t.getElementsByTagName("head")[0], e);
            return e.sheet || e.styleSheet
        }(),
        d = function g(e) {
            if (!this.spin) return new g(e);
            this.opts = h(e || {}, g.defaults, v)
        }, v = d.defaults = {
            lines: 12,
            length: 7,
            width: 5,
            radius: 10,
            color: "#000",
            speed: 1,
            trail: 100,
            opacity: .25,
            fps: 20
        }, m = d.prototype = {
            spin: function (e) {
                this.stop();
                var t = this,
                    n = t.el = c(o(), {
                        position: "relative"
                    }),
                    r, i;
                if (e) {
                    i = p(u(e, n, e.firstChild));
                    r = p(n);
                    c(n, {
                        left: (e.offsetWidth >> 1) - r.x + i.x + "px",
                        top: (e.offsetHeight >> 1) - r.y + i.y + "px"
                    })
                }
                n.setAttribute("aria-role", "progressbar");
                t.lines(n, t.opts);
                if (!s) {
                    var a = t.opts,
                        f = 0,
                        l = a.fps,
                        h = l / a.speed,
                        d = (1 - a.opacity) / (h * a.trail / 100),
                        v = h / a.lines;
                    (function m() {
                        f++;
                        for (var e = a.lines; e; e--) {
                            var r = Math.max(1 - (f + e * v) % h * d, a.opacity);
                            t.opacity(n, a.lines - e, r, a)
                        }
                        t.timeout = t.el && setTimeout(m, ~~ (1e3 / l))
                    })()
                }
                return t
            },
            stop: function () {
                var e = this.el;
                if (e) {
                    clearTimeout(this.timeout);
                    e.parentNode && e.parentNode.removeChild(e);
                    this.el = n
                }
                return this
            }
        };
    m.lines = function (e, t) {
        function i(e, r) {
            return c(o(), {
                position: "absolute",
                width: t.length + t.width + "px",
                height: t.width + "px",
                background: e,
                boxShadow: r,
                transformOrigin: "left",
                transform: "rotate(" + ~~ (360 / t.lines * n) + "deg) translate(" + t.radius + "px" + ",0)",
                borderRadius: (t.width >> 1) + "px"
            })
        }
        var n = 0,
            r;
        for (; n < t.lines; n++) {
            r = c(o(), {
                position: "absolute",
                top: 1 + ~ (t.width / 2) + "px",
                transform: "translate3d(0,0,0)",
                opacity: t.opacity,
                animation: s && f(t.opacity, t.trail, n, t.lines) + " " + 1 / t.speed + "s linear infinite"
            });
            t.shadow && u(r, c(i("#000", "0 0 4px #000"), {
                top: "2px"
            }));
            u(e, u(r, i(t.color, "0 0 1px rgba(0,0,0,.1)")))
        }
        return e
    };
    m.opacity = function (e, t, n) {
        t < e.childNodes.length && (e.childNodes[t].style.opacity = n)
    };
    (function () {
        var e = c(o("group"), {
            behavior: "url(#default#VML)"
        }),
            t;
        if (!l(e, "transform") && e.adj) {
            for (t = 4; t--;) a.addRule(["group", "roundrect", "fill", "stroke"][t], "behavior:url(#default#VML)");
            m.lines = function (e, t) {
                function i() {
                    return c(o("group", {
                        coordsize: r + " " + r,
                        coordorigin: -n + " " + -n
                    }), {
                        width: r,
                        height: r
                    })
                }
                function l(e, r, a) {
                    u(s, u(c(i(), {
                        rotation: 360 / t.lines * e + "deg",
                        left: ~~r
                    }), u(c(o("roundrect", {
                        arcsize: 1
                    }), {
                        width: n,
                        height: t.width,
                        left: t.radius,
                        top: -t.width >> 1,
                        filter: a
                    }), o("fill", {
                        color: t.color,
                        opacity: t.opacity
                    }), o("stroke", {
                        opacity: 0
                    }))))
                }
                var n = t.length + t.width,
                    r = 2 * n,
                    s = i(),
                    a = ~ (t.length + t.radius + t.width) + "px",
                    f;
                if (t.shadow) for (f = 1; f <= t.lines; f++) l(f, -2, "progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");
                for (f = 1; f <= t.lines; f++) l(f);
                return u(c(e, {
                    margin: a + " 0 0 " + a,
                    zoom: 1
                }), s)
            };
            m.opacity = function (e, t, n, r) {
                var i = e.firstChild;
                r = r.shadow && r.lines || 0;
                if (i && t + r < i.childNodes.length) {
                    i = i.childNodes[t + r];
                    i = i && i.firstChild;
                    i = i && i.firstChild;
                    i && (i.opacity = n)
                }
            }
        } else s = l(e, "animation")
    })();
    e.Spinner = d
})(window, document);
(function (e, t) {
    function u(e) {
        var t = o[e] = {}, n, r;
        e = e.split(/\s+/);
        for (n = 0, r = e.length; n < r; n++) t[e[n]] = !0;
        return t
    }
    function c(e, n, r) {
        if (r === t && e.nodeType === 1) {
            var i = "data-" + n.replace(l, "-$1").toLowerCase();
            r = e.getAttribute(i);
            if (typeof r == "string") {
                try {
                    r = r === "true" ? !0 : r === "false" ? !1 : r === "null" ? null : s.isNumeric(r) ? parseFloat(r) : f.test(r) ? s.parseJSON(r) : r
                } catch (o) {}
                s.data(e, n, r)
            } else r = t
        }
        return r
    }
    function h(e) {
        for (var t in e) {
            if (t === "data" && s.isEmptyObject(e[t])) continue;
            if (t !== "toJSON") return !1
        }
        return !0
    }
    function p(e, t, n) {
        var r = t + "defer",
            i = t + "queue",
            o = t + "mark",
            u = s._data(e, r);
        u && (n === "queue" || !s._data(e, i)) && (n === "mark" || !s._data(e, o)) && setTimeout(function () {
            if (!s._data(e, i) && !s._data(e, o)) {
                s.removeData(e, r, !0);
                u.fire()
            }
        }, 0)
    }
    function H() {
        return !1
    }
    function B() {
        return !0
    }
    function W(e) {
        return !e || !e.parentNode || e.parentNode.nodeType === 11
    }
    function X(e, t, n) {
        t = t || 0;
        if (s.isFunction(t)) return s.grep(e, function (e, r) {
            var i = !! t.call(e, r, e);
            return i === n
        });
        if (t.nodeType) return s.grep(e, function (e, r) {
            return e === t === n
        });
        if (typeof t == "string") {
            var r = s.grep(e, function (e) {
                return e.nodeType === 1
            });
            if (q.test(t)) return s.filter(t, r, !n);
            t = s.filter(t, r)
        }
        return s.grep(e, function (e, r) {
            return s.inArray(e, t) >= 0 === n
        })
    }
    function V(e) {
        var t = $.split("|"),
            n = e.createDocumentFragment();
        if (n.createElement) while (t.length) n.createElement(t.pop());
        return n
    }
    function at(e, t) {
        return s.nodeName(e, "table") ? e.getElementsByTagName("tbody")[0] || e.appendChild(e.ownerDocument.createElement("tbody")) : e
    }
    function ft(e, t) {
        if (t.nodeType !== 1 || !s.hasData(e)) return;
        var n, r, i, o = s._data(e),
            u = s._data(t, o),
            a = o.events;
        if (a) {
            delete u.handle;
            u.events = {};
            for (n in a) for (r = 0, i = a[n].length; r < i; r++) s.event.add(t, n + (a[n][r].namespace ? "." : "") + a[n][r].namespace, a[n][r], a[n][r].data)
        }
        u.data && (u.data = s.extend({}, u.data))
    }
    function lt(e, t) {
        var n;
        if (t.nodeType !== 1) return;
        t.clearAttributes && t.clearAttributes();
        t.mergeAttributes && t.mergeAttributes(e);
        n = t.nodeName.toLowerCase();
        if (n === "object") t.outerHTML = e.outerHTML;
        else if (n !== "input" || e.type !== "checkbox" && e.type !== "radio") {
            if (n === "option") t.selected = e.defaultSelected;
            else if (n === "input" || n === "textarea") t.defaultValue = e.defaultValue
        } else {
            e.checked && (t.defaultChecked = t.checked = e.checked);
            t.value !== e.value && (t.value = e.value)
        }
        t.removeAttribute(s.expando)
    }
    function ct(e) {
        return typeof e.getElementsByTagName != "undefined" ? e.getElementsByTagName("*") : typeof e.querySelectorAll != "undefined" ? e.querySelectorAll("*") : []
    }
    function ht(e) {
        if (e.type === "checkbox" || e.type === "radio") e.defaultChecked = e.checked
    }
    function pt(e) {
        var t = (e.nodeName || "").toLowerCase();
        t === "input" ? ht(e) : t !== "script" && typeof e.getElementsByTagName != "undefined" && s.grep(e.getElementsByTagName("input"), ht)
    }
    function dt(e) {
        var t = n.createElement("div");
        ut.appendChild(t);
        t.innerHTML = e.outerHTML;
        return t.firstChild
    }
    function vt(e, t) {
        t.src ? s.ajax({
            url: t.src,
            async: !1,
            dataType: "script"
        }) : s.globalEval((t.text || t.textContent || t.innerHTML || "").replace(st, "/*$0*/"));
        t.parentNode && t.parentNode.removeChild(t)
    }
    function Lt(e, t, n) {
        var r = t === "width" ? e.offsetWidth : e.offsetHeight,
            i = t === "width" ? xt : Tt,
            o = 0,
            u = i.length;
        if (r > 0) {
            if (n !== "border") for (; o < u; o++) {
                n || (r -= parseFloat(s.css(e, "padding" + i[o])) || 0);
                n === "margin" ? r += parseFloat(s.css(e, n + i[o])) || 0 : r -= parseFloat(s.css(e, "border" + i[o] + "Width")) || 0
            }
            return r + "px"
        }
        r = Nt(e, t, t);
        if (r < 0 || r == null) r = e.style[t] || 0;
        r = parseFloat(r) || 0;
        if (n) for (; o < u; o++) {
            r += parseFloat(s.css(e, "padding" + i[o])) || 0;
            n !== "padding" && (r += parseFloat(s.css(e, "border" + i[o] + "Width")) || 0);
            n === "margin" && (r += parseFloat(s.css(e, n + i[o])) || 0)
        }
        return r + "px"
    }
    function Gt(e) {
        return function (t, n) {
            if (typeof t != "string") {
                n = t;
                t = "*"
            }
            if (s.isFunction(n)) {
                var r = t.toLowerCase().split(Rt),
                    i = 0,
                    o = r.length,
                    u, a, f;
                for (; i < o; i++) {
                    u = r[i];
                    f = /^\+/.test(u);
                    f && (u = u.substr(1) || "*");
                    a = e[u] = e[u] || [];
                    a[f ? "unshift" : "push"](n)
                }
            }
        }
    }
    function Yt(e, n, r, i, s, o) {
        s = s || n.dataTypes[0];
        o = o || {};
        o[s] = !0;
        var u = e[s],
            a = 0,
            f = u ? u.length : 0,
            l = e === Xt,
            c;
        for (; a < f && (l || !c); a++) {
            c = u[a](n, r, i);
            if (typeof c == "string") if (!l || o[c]) c = t;
            else {
                n.dataTypes.unshift(c);
                c = Yt(e, n, r, i, c, o)
            }
        }(l || !c) && !o["*"] && (c = Yt(e, n, r, i, "*", o));
        return c
    }
    function Zt(e, n) {
        var r, i, o = s.ajaxSettings.flatOptions || {};
        for (r in n) n[r] !== t && ((o[r] ? e : i || (i = {}))[r] = n[r]);
        i && s.extend(!0, e, i)
    }
    function en(e, t, n, r) {
        if (s.isArray(t)) s.each(t, function (t, i) {
            n || Ot.test(e) ? r(e, i) : en(e + "[" + (typeof i == "object" || s.isArray(i) ? t : "") + "]", i, n, r)
        });
        else if (!n && t != null && typeof t == "object") for (var i in t) en(e + "[" + i + "]", t[i], n, r);
        else r(e, t)
    }
    function tn(e, n, r) {
        var i = e.contents,
            s = e.dataTypes,
            o = e.responseFields,
            u, a, f, l;
        for (a in o) a in r && (n[o[a]] = r[a]);
        while (s[0] === "*") {
            s.shift();
            u === t && (u = e.mimeType || n.getResponseHeader("content-type"))
        }
        if (u) for (a in i) if (i[a] && i[a].test(u)) {
            s.unshift(a);
            break
        }
        if (s[0] in r) f = s[0];
        else {
            for (a in r) {
                if (!s[0] || e.converters[a + " " + s[0]]) {
                    f = a;
                    break
                }
                l || (l = a)
            }
            f = f || l
        }
        if (f) {
            f !== s[0] && s.unshift(f);
            return r[f]
        }
    }
    function nn(e, n) {
        e.dataFilter && (n = e.dataFilter(n, e.dataType));
        var r = e.dataTypes,
            i = {}, o, u, a = r.length,
            f, l = r[0],
            c, h, p, d, v;
        for (o = 1; o < a; o++) {
            if (o === 1) for (u in e.converters) typeof u == "string" && (i[u.toLowerCase()] = e.converters[u]);
            c = l;
            l = r[o];
            if (l === "*") l = c;
            else if (c !== "*" && c !== l) {
                h = c + " " + l;
                p = i[h] || i["* " + l];
                if (!p) {
                    v = t;
                    for (d in i) {
                        f = d.split(" ");
                        if (f[0] === c || f[0] === "*") {
                            v = i[f[1] + " " + l];
                            if (v) {
                                d = i[d];
                                d === !0 ? p = v : v === !0 && (p = d);
                                break
                            }
                        }
                    }
                }!p && !v && s.error("No conversion from " + h.replace(" ", " to "));
                p !== !0 && (n = p ? p(n) : v(d(n)))
            }
        }
        return n
    }
    function fn() {
        try {
            return new e.XMLHttpRequest
        } catch (t) {}
    }
    function ln() {
        try {
            return new e.ActiveXObject("Microsoft.XMLHTTP")
        } catch (t) {}
    }
    function bn() {
        setTimeout(wn, 0);
        return yn = s.now()
    }
    function wn() {
        yn = t
    }
    function En(e, t) {
        var n = {};
        s.each(gn.concat.apply([], gn.slice(0, t)), function () {
            n[this] = e
        });
        return n
    }
    function Sn(e) {
        if (!cn[e]) {
            var t = n.body,
                r = s("<" + e + ">").appendTo(t),
                i = r.css("display");
            r.remove();
            if (i === "none" || i === "") {
                if (!hn) {
                    hn = n.createElement("iframe");
                    hn.frameBorder = hn.width = hn.height = 0
                }
                t.appendChild(hn);
                if (!pn || !hn.createElement) {
                    pn = (hn.contentWindow || hn.contentDocument).document;
                    pn.write((n.compatMode === "CSS1Compat" ? "<!doctype html>" : "") + "<html><body>");
                    pn.close()
                }
                r = pn.createElement(e);
                pn.body.appendChild(r);
                i = s.css(r, "display");
                t.removeChild(hn)
            }
            cn[e] = i
        }
        return cn[e]
    }
    function Nn(e) {
        return s.isWindow(e) ? e : e.nodeType === 9 ? e.defaultView || e.parentWindow : !1
    }
    var n = e.document,
        r = e.navigator,
        i = e.location,
        s = function () {
            function H() {
                if (i.isReady) return;
                try {
                    n.documentElement.doScroll("left")
                } catch (e) {
                    setTimeout(H, 1);
                    return
                }
                i.ready()
            }
            var i = function (e, t) {
                return new i.fn.init(e, t, u)
            }, s = e.jQuery,
                o = e.$,
                u, a = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
                f = /\S/,
                l = /^\s+/,
                c = /\s+$/,
                h = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
                p = /^[\],:{}\s]*$/,
                d = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
                v = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
                m = /(?:^|:|,)(?:\s*\[)+/g,
                g = /(webkit)[ \/]([\w.]+)/,
                y = /(opera)(?:.*version)?[ \/]([\w.]+)/,
                b = /(msie) ([\w.]+)/,
                w = /(mozilla)(?:.*? rv:([\w.]+))?/,
                E = /-([a-z]|[0-9])/ig,
                S = /^-ms-/,
                x = function (e, t) {
                    return (t + "").toUpperCase()
                }, T = r.userAgent,
                N, C, k, L = Object.prototype.toString,
                A = Object.prototype.hasOwnProperty,
                O = Array.prototype.push,
                M = Array.prototype.slice,
                _ = String.prototype.trim,
                D = Array.prototype.indexOf,
                P = {};
            i.fn = i.prototype = {
                constructor: i,
                init: function (e, r, s) {
                    var o, u, f, l;
                    if (!e) return this;
                    if (e.nodeType) {
                        this.context = this[0] = e;
                        this.length = 1;
                        return this
                    }
                    if (e === "body" && !r && n.body) {
                        this.context = n;
                        this[0] = n.body;
                        this.selector = e;
                        this.length = 1;
                        return this
                    }
                    if (typeof e == "string") {
                        e.charAt(0) === "<" && e.charAt(e.length - 1) === ">" && e.length >= 3 ? o = [null, e, null] : o = a.exec(e);
                        if (o && (o[1] || !r)) {
                            if (o[1]) {
                                r = r instanceof i ? r[0] : r;
                                l = r ? r.ownerDocument || r : n;
                                f = h.exec(e);
                                if (f) if (i.isPlainObject(r)) {
                                    e = [n.createElement(f[1])];
                                    i.fn.attr.call(e, r, !0)
                                } else e = [l.createElement(f[1])];
                                else {
                                    f = i.buildFragment([o[1]], [l]);
                                    e = (f.cacheable ? i.clone(f.fragment) : f.fragment).childNodes
                                }
                                return i.merge(this, e)
                            }
                            u = n.getElementById(o[2]);
                            if (u && u.parentNode) {
                                if (u.id !== o[2]) return s.find(e);
                                this.length = 1;
                                this[0] = u
                            }
                            this.context = n;
                            this.selector = e;
                            return this
                        }
                        return !r || r.jquery ? (r || s).find(e) : this.constructor(r).find(e)
                    }
                    if (i.isFunction(e)) return s.ready(e);
                    if (e.selector !== t) {
                        this.selector = e.selector;
                        this.context = e.context
                    }
                    return i.makeArray(e, this)
                },
                selector: "",
                jquery: "1.7.1",
                length: 0,
                size: function () {
                    return this.length
                },
                toArray: function () {
                    return M.call(this, 0)
                },
                get: function (e) {
                    return e == null ? this.toArray() : e < 0 ? this[this.length + e] : this[e]
                },
                pushStack: function (e, t, n) {
                    var r = this.constructor();
                    i.isArray(e) ? O.apply(r, e) : i.merge(r, e);
                    r.prevObject = this;
                    r.context = this.context;
                    t === "find" ? r.selector = this.selector + (this.selector ? " " : "") + n : t && (r.selector = this.selector + "." + t + "(" + n + ")");
                    return r
                },
                each: function (e, t) {
                    return i.each(this, e, t)
                },
                ready: function (e) {
                    i.bindReady();
                    C.add(e);
                    return this
                },
                eq: function (e) {
                    e = +e;
                    return e === -1 ? this.slice(e) : this.slice(e, e + 1)
                },
                first: function () {
                    return this.eq(0)
                },
                last: function () {
                    return this.eq(-1)
                },
                slice: function () {
                    return this.pushStack(M.apply(this, arguments), "slice", M.call(arguments).join(","))
                },
                map: function (e) {
                    return this.pushStack(i.map(this, function (t, n) {
                        return e.call(t, n, t)
                    }))
                },
                end: function () {
                    return this.prevObject || this.constructor(null)
                },
                push: O,
                sort: [].sort,
                splice: [].splice
            };
            i.fn.init.prototype = i.fn;
            i.extend = i.fn.extend = function () {
                var e, n, r, s, o, u, a = arguments[0] || {}, f = 1,
                    l = arguments.length,
                    c = !1;
                if (typeof a == "boolean") {
                    c = a;
                    a = arguments[1] || {};
                    f = 2
                }
                typeof a != "object" && !i.isFunction(a) && (a = {});
                if (l === f) {
                    a = this;
                    --f
                }
                for (; f < l; f++) if ((e = arguments[f]) != null) for (n in e) {
                    r = a[n];
                    s = e[n];
                    if (a === s) continue;
                    if (c && s && (i.isPlainObject(s) || (o = i.isArray(s)))) {
                        if (o) {
                            o = !1;
                            u = r && i.isArray(r) ? r : []
                        } else u = r && i.isPlainObject(r) ? r : {};
                        a[n] = i.extend(c, u, s)
                    } else s !== t && (a[n] = s)
                }
                return a
            };
            i.extend({
                noConflict: function (t) {
                    e.$ === i && (e.$ = o);
                    t && e.jQuery === i && (e.jQuery = s);
                    return i
                },
                isReady: !1,
                readyWait: 1,
                holdReady: function (e) {
                    e ? i.readyWait++ : i.ready(!0)
                },
                ready: function (e) {
                    if (e === !0 && !--i.readyWait || e !== !0 && !i.isReady) {
                        if (!n.body) return setTimeout(i.ready, 1);
                        i.isReady = !0;
                        if (e !== !0 && --i.readyWait > 0) return;
                        C.fireWith(n, [i]);
                        i.fn.trigger && i(n).trigger("ready").off("ready")
                    }
                },
                bindReady: function () {
                    if (C) return;
                    C = i.Callbacks("once memory");
                    if (n.readyState === "complete") return setTimeout(i.ready, 1);
                    if (n.addEventListener) {
                        n.addEventListener("DOMContentLoaded", k, !1);
                        e.addEventListener("load", i.ready, !1)
                    } else if (n.attachEvent) {
                        n.attachEvent("onreadystatechange", k);
                        e.attachEvent("onload", i.ready);
                        var t = !1;
                        try {
                            t = e.frameElement == null
                        } catch (r) {}
                        n.documentElement.doScroll && t && H()
                    }
                },
                isFunction: function (e) {
                    return i.type(e) === "function"
                },
                isArray: Array.isArray || function (e) {
                    return i.type(e) === "array"
                },
                isWindow: function (e) {
                    return e && typeof e == "object" && "setInterval" in e
                },
                isNumeric: function (e) {
                    return !isNaN(parseFloat(e)) && isFinite(e)
                },
                type: function (e) {
                    return e == null ? String(e) : P[L.call(e)] || "object"
                },
                isPlainObject: function (e) {
                    if (!e || i.type(e) !== "object" || e.nodeType || i.isWindow(e)) return !1;
                    try {
                        if (e.constructor && !A.call(e, "constructor") && !A.call(e.constructor.prototype, "isPrototypeOf")) return !1
                    } catch (n) {
                        return !1
                    }
                    var r;
                    for (r in e);
                    return r === t || A.call(e, r)
                },
                isEmptyObject: function (e) {
                    for (var t in e) return !1;
                    return !0
                },
                error: function (e) {
                    throw new Error(e)
                },
                parseJSON: function (t) {
                    if (typeof t != "string" || !t) return null;
                    t = i.trim(t);
                    if (e.JSON && e.JSON.parse) return e.JSON.parse(t);
                    if (p.test(t.replace(d, "@").replace(v, "]").replace(m, ""))) return (new Function("return " + t))();
                    i.error("Invalid JSON: " + t)
                },
                parseXML: function (n) {
                    var r, s;
                    try {
                        if (e.DOMParser) {
                            s = new DOMParser;
                            r = s.parseFromString(n, "text/xml")
                        } else {
                            r = new ActiveXObject("Microsoft.XMLDOM");
                            r.async = "false";
                            r.loadXML(n)
                        }
                    } catch (o) {
                        r = t
                    }(!r || !r.documentElement || r.getElementsByTagName("parsererror").length) && i.error("Invalid XML: " + n);
                    return r
                },
                noop: function () {},
                globalEval: function (t) {
                    t && f.test(t) && (e.execScript || function (t) {
                        e.eval.call(e, t)
                    })(t)
                },
                camelCase: function (e) {
                    return e.replace(S, "ms-").replace(E, x)
                },
                nodeName: function (e, t) {
                    return e.nodeName && e.nodeName.toUpperCase() === t.toUpperCase()
                },
                each: function (e, n, r) {
                    var s, o = 0,
                        u = e.length,
                        a = u === t || i.isFunction(e);
                    if (r) {
                        if (a) {
                            for (s in e) if (n.apply(e[s], r) === !1) break
                        } else for (; o < u;) if (n.apply(e[o++], r) === !1) break
                    } else if (a) {
                        for (s in e) if (n.call(e[s], s, e[s]) === !1) break
                    } else for (; o < u;) if (n.call(e[o], o, e[o++]) === !1) break;
                    return e
                },
                trim: _ ? function (e) {
                    return e == null ? "" : _.call(e)
                } : function (e) {
                    return e == null ? "" : e.toString().replace(l, "").replace(c, "")
                },
                makeArray: function (e, t) {
                    var n = t || [];
                    if (e != null) {
                        var r = i.type(e);
                        e.length == null || r === "string" || r === "function" || r === "regexp" || i.isWindow(e) ? O.call(n, e) : i.merge(n, e)
                    }
                    return n
                },
                inArray: function (e, t, n) {
                    var r;
                    if (t) {
                        if (D) return D.call(t, e, n);
                        r = t.length;
                        n = n ? n < 0 ? Math.max(0, r + n) : n : 0;
                        for (; n < r; n++) if (n in t && t[n] === e) return n
                    }
                    return -1
                },
                merge: function (e, n) {
                    var r = e.length,
                        i = 0;
                    if (typeof n.length == "number") for (var s = n.length; i < s; i++) e[r++] = n[i];
                    else while (n[i] !== t) e[r++] = n[i++];
                    e.length = r;
                    return e
                },
                grep: function (e, t, n) {
                    var r = [],
                        i;
                    n = !! n;
                    for (var s = 0, o = e.length; s < o; s++) {
                        i = !! t(e[s], s);
                        n !== i && r.push(e[s])
                    }
                    return r
                },
                map: function (e, n, r) {
                    var s, o, u = [],
                        a = 0,
                        f = e.length,
                        l = e instanceof i || f !== t && typeof f == "number" && (f > 0 && e[0] && e[f - 1] || f === 0 || i.isArray(e));
                    if (l) for (; a < f; a++) {
                        s = n(e[a], a, r);
                        s != null && (u[u.length] = s)
                    } else for (o in e) {
                        s = n(e[o], o, r);
                        s != null && (u[u.length] = s)
                    }
                    return u.concat.apply([], u)
                },
                guid: 1,
                proxy: function (e, n) {
                    if (typeof n == "string") {
                        var r = e[n];
                        n = e;
                        e = r
                    }
                    if (!i.isFunction(e)) return t;
                    var s = M.call(arguments, 2),
                        o = function () {
                            return e.apply(n, s.concat(M.call(arguments)))
                        };
                    o.guid = e.guid = e.guid || o.guid || i.guid++;
                    return o
                },
                access: function (e, n, r, s, o, u) {
                    var a = e.length;
                    if (typeof n == "object") {
                        for (var f in n) i.access(e, f, n[f], s, o, r);
                        return e
                    }
                    if (r !== t) {
                        s = !u && s && i.isFunction(r);
                        for (var l = 0; l < a; l++) o(e[l], n, s ? r.call(e[l], l, o(e[l], n)) : r, u);
                        return e
                    }
                    return a ? o(e[0], n) : t
                },
                now: function () {
                    return (new Date).getTime()
                },
                uaMatch: function (e) {
                    e = e.toLowerCase();
                    var t = g.exec(e) || y.exec(e) || b.exec(e) || e.indexOf("compatible") < 0 && w.exec(e) || [];
                    return {
                        browser: t[1] || "",
                        version: t[2] || "0"
                    }
                },
                sub: function () {
                    function e(t, n) {
                        return new e.fn.init(t, n)
                    }
                    i.extend(!0, e, this);
                    e.superclass = this;
                    e.fn = e.prototype = this();
                    e.fn.constructor = e;
                    e.sub = this.sub;
                    e.fn.init = function (r, s) {
                        s && s instanceof i && !(s instanceof e) && (s = e(s));
                        return i.fn.init.call(this, r, s, t)
                    };
                    e.fn.init.prototype = e.fn;
                    var t = e(n);
                    return e
                },
                browser: {}
            });
            i.each("Boolean Number String Function Array Date RegExp Object".split(" "), function (e, t) {
                P["[object " + t + "]"] = t.toLowerCase()
            });
            N = i.uaMatch(T);
            if (N.browser) {
                i.browser[N.browser] = !0;
                i.browser.version = N.version
            }
            i.browser.webkit && (i.browser.safari = !0);
            if (f.test(" ")) {
                l = /^[\s\xA0]+/;
                c = /[\s\xA0]+$/
            }
            u = i(n);
            n.addEventListener ? k = function () {
                n.removeEventListener("DOMContentLoaded", k, !1);
                i.ready()
            } : n.attachEvent && (k = function () {
                if (n.readyState === "complete") {
                    n.detachEvent("onreadystatechange", k);
                    i.ready()
                }
            });
            return i
        }(),
        o = {};
    s.Callbacks = function (e) {
        e = e ? o[e] || u(e) : {};
        var n = [],
            r = [],
            i, a, f, l, c, h = function (t) {
                var r, i, o, u, a;
                for (r = 0, i = t.length; r < i; r++) {
                    o = t[r];
                    u = s.type(o);
                    u === "array" ? h(o) : u === "function" && (!e.unique || !d.has(o)) && n.push(o)
                }
            }, p = function (t, s) {
                s = s || [];
                i = !e.memory || [t, s];
                a = !0;
                c = f || 0;
                f = 0;
                l = n.length;
                for (; n && c < l; c++) if (n[c].apply(t, s) === !1 && e.stopOnFalse) {
                    i = !0;
                    break
                }
                a = !1;
                if (n) if (!e.once) {
                    if (r && r.length) {
                        i = r.shift();
                        d.fireWith(i[0], i[1])
                    }
                } else i === !0 ? d.disable() : n = []
            }, d = {
                add: function () {
                    if (n) {
                        var e = n.length;
                        h(arguments);
                        if (a) l = n.length;
                        else if (i && i !== !0) {
                            f = e;
                            p(i[0], i[1])
                        }
                    }
                    return this
                },
                remove: function () {
                    if (n) {
                        var t = arguments,
                            r = 0,
                            i = t.length;
                        for (; r < i; r++) for (var s = 0; s < n.length; s++) if (t[r] === n[s]) {
                            if (a && s <= l) {
                                l--;
                                s <= c && c--
                            }
                            n.splice(s--, 1);
                            if (e.unique) break
                        }
                    }
                    return this
                },
                has: function (e) {
                    if (n) {
                        var t = 0,
                            r = n.length;
                        for (; t < r; t++) if (e === n[t]) return !0
                    }
                    return !1
                },
                empty: function () {
                    n = [];
                    return this
                },
                disable: function () {
                    n = r = i = t;
                    return this
                },
                disabled: function () {
                    return !n
                },
                lock: function () {
                    r = t;
                    (!i || i === !0) && d.disable();
                    return this
                },
                locked: function () {
                    return !r
                },
                fireWith: function (t, n) {
                    r && (a ? e.once || r.push([t, n]) : (!e.once || !i) && p(t, n));
                    return this
                },
                fire: function () {
                    d.fireWith(this, arguments);
                    return this
                },
                fired: function () {
                    return !!i
                }
            };
        return d
    };
    var a = [].slice;
    s.extend({
        Deferred: function (e) {
            var t = s.Callbacks("once memory"),
                n = s.Callbacks("once memory"),
                r = s.Callbacks("memory"),
                i = "pending",
                o = {
                    resolve: t,
                    reject: n,
                    notify: r
                }, u = {
                    done: t.add,
                    fail: n.add,
                    progress: r.add,
                    state: function () {
                        return i
                    },
                    isResolved: t.fired,
                    isRejected: n.fired,
                    then: function (e, t, n) {
                        a.done(e).fail(t).progress(n);
                        return this
                    },
                    always: function () {
                        a.done.apply(a, arguments).fail.apply(a, arguments);
                        return this
                    },
                    pipe: function (e, t, n) {
                        return s.Deferred(function (r) {
                            s.each({
                                done: [e, "resolve"],
                                fail: [t, "reject"],
                                progress: [n, "notify"]
                            }, function (e, t) {
                                var n = t[0],
                                    i = t[1],
                                    o;
                                s.isFunction(n) ? a[e](function () {
                                    o = n.apply(this, arguments);
                                    o && s.isFunction(o.promise) ? o.promise().then(r.resolve, r.reject, r.notify) : r[i + "With"](this === a ? r : this, [o])
                                }) : a[e](r[i])
                            })
                        }).promise()
                    },
                    promise: function (e) {
                        if (e == null) e = u;
                        else for (var t in u) e[t] = u[t];
                        return e
                    }
                }, a = u.promise({}),
                f;
            for (f in o) {
                a[f] = o[f].fire;
                a[f + "With"] = o[f].fireWith
            }
            a.done(function () {
                i = "resolved"
            }, n.disable, r.lock).fail(function () {
                i = "rejected"
            }, t.disable, r.lock);
            e && e.call(a, a);
            return a
        },
        when: function (e) {
            function c(e) {
                return function (n) {
                    t[e] = arguments.length > 1 ? a.call(arguments, 0) : n;
                    --o || f.resolveWith(f, t)
                }
            }
            function h(e) {
                return function (t) {
                    i[e] = arguments.length > 1 ? a.call(arguments, 0) : t;
                    f.notifyWith(l, i)
                }
            }
            var t = a.call(arguments, 0),
                n = 0,
                r = t.length,
                i = new Array(r),
                o = r,
                u = r,
                f = r <= 1 && e && s.isFunction(e.promise) ? e : s.Deferred(),
                l = f.promise();
            if (r > 1) {
                for (; n < r; n++) t[n] && t[n].promise && s.isFunction(t[n].promise) ? t[n].promise().then(c(n), f.reject, h(n)) : --o;
                o || f.resolveWith(f, t)
            } else f !== e && f.resolveWith(f, r ? [e] : []);
            return l
        }
    });
    s.support = function () {
        var t, r, i, o, u, a, f, l, c, h, p, d, v, m = n.createElement("div"),
            g = n.documentElement;
        m.setAttribute("className", "t");
        m.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
        r = m.getElementsByTagName("*");
        i = m.getElementsByTagName("a")[0];
        if (!r || !r.length || !i) return {};
        o = n.createElement("select");
        u = o.appendChild(n.createElement("option"));
        a = m.getElementsByTagName("input")[0];
        t = {
            leadingWhitespace: m.firstChild.nodeType === 3,
            tbody: !m.getElementsByTagName("tbody").length,
            htmlSerialize: !! m.getElementsByTagName("link").length,
            style: /top/.test(i.getAttribute("style")),
            hrefNormalized: i.getAttribute("href") === "/a",
            opacity: /^0.55/.test(i.style.opacity),
            cssFloat: !! i.style.cssFloat,
            checkOn: a.value === "on",
            optSelected: u.selected,
            getSetAttribute: m.className !== "t",
            enctype: !! n.createElement("form").enctype,
            html5Clone: n.createElement("nav").cloneNode(!0).outerHTML !== "<:nav></:nav>",
            submitBubbles: !0,
            changeBubbles: !0,
            focusinBubbles: !1,
            deleteExpando: !0,
            noCloneEvent: !0,
            inlineBlockNeedsLayout: !1,
            shrinkWrapBlocks: !1,
            reliableMarginRight: !0
        };
        a.checked = !0;
        t.noCloneChecked = a.cloneNode(!0).checked;
        o.disabled = !0;
        t.optDisabled = !u.disabled;
        try {
            delete m.test
        } catch (y) {
            t.deleteExpando = !1
        }
        if (!m.addEventListener && m.attachEvent && m.fireEvent) {
            m.attachEvent("onclick", function () {
                t.noCloneEvent = !1
            });
            m.cloneNode(!0).fireEvent("onclick")
        }
        a = n.createElement("input");
        a.value = "t";
        a.setAttribute("type", "radio");
        t.radioValue = a.value === "t";
        a.setAttribute("checked", "checked");
        m.appendChild(a);
        l = n.createDocumentFragment();
        l.appendChild(m.lastChild);
        t.checkClone = l.cloneNode(!0).cloneNode(!0).lastChild.checked;
        t.appendChecked = a.checked;
        l.removeChild(a);
        l.appendChild(m);
        m.innerHTML = "";
        if (e.getComputedStyle) {
            f = n.createElement("div");
            f.style.width = "0";
            f.style.marginRight = "0";
            m.style.width = "2px";
            m.appendChild(f);
            t.reliableMarginRight = (parseInt((e.getComputedStyle(f, null) || {
                marginRight: 0
            }).marginRight, 10) || 0) === 0
        }
        if (m.attachEvent) for (d in {
            submit: 1,
            change: 1,
            focusin: 1
        }) {
            p = "on" + d;
            v = p in m;
            if (!v) {
                m.setAttribute(p, "return;");
                v = typeof m[p] == "function"
            }
            t[d + "Bubbles"] = v
        }
        l.removeChild(m);
        l = o = u = f = m = a = null;
        s(function () {
            var e, r, i, o, u, a, f, l, h, p, d, g = n.getElementsByTagName("body")[0];
            if (!g) return;
            f = 1;
            l = "position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";
            h = "visibility:hidden;border:0;";
            p = "style='" + l + "border:5px solid #000;padding:0;'";
            d = "<div " + p + "><div></div></div>" + "<table " + p + " cellpadding='0' cellspacing='0'>" + "<tr><td></td></tr></table>";
            e = n.createElement("div");
            e.style.cssText = h + "width:0;height:0;position:static;top:0;margin-top:" + f + "px";
            g.insertBefore(e, g.firstChild);
            m = n.createElement("div");
            e.appendChild(m);
            m.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
            c = m.getElementsByTagName("td");
            v = c[0].offsetHeight === 0;
            c[0].style.display = "";
            c[1].style.display = "none";
            t.reliableHiddenOffsets = v && c[0].offsetHeight === 0;
            m.innerHTML = "";
            m.style.width = m.style.paddingLeft = "1px";
            s.boxModel = t.boxModel = m.offsetWidth === 2;
            if (typeof m.style.zoom != "undefined") {
                m.style.display = "inline";
                m.style.zoom = 1;
                t.inlineBlockNeedsLayout = m.offsetWidth === 2;
                m.style.display = "";
                m.innerHTML = "<div style='width:4px;'></div>";
                t.shrinkWrapBlocks = m.offsetWidth !== 2
            }
            m.style.cssText = l + h;
            m.innerHTML = d;
            r = m.firstChild;
            i = r.firstChild;
            u = r.nextSibling.firstChild.firstChild;
            a = {
                doesNotAddBorder: i.offsetTop !== 5,
                doesAddBorderForTableAndCells: u.offsetTop === 5
            };
            i.style.position = "fixed";
            i.style.top = "20px";
            a.fixedPosition = i.offsetTop === 20 || i.offsetTop === 15;
            i.style.position = i.style.top = "";
            r.style.overflow = "hidden";
            r.style.position = "relative";
            a.subtractsBorderForOverflowNotVisible = i.offsetTop === -5;
            a.doesNotIncludeMarginInBodyOffset = g.offsetTop !== f;
            g.removeChild(e);
            m = e = null;
            s.extend(t, a)
        });
        return t
    }();
    var f = /^(?:\{.*\}|\[.*\])$/,
        l = /([A-Z])/g;
    s.extend({
        cache: {},
        uuid: 0,
        expando: "jQuery" + (s.fn.jquery + Math.random()).replace(/\D/g, ""),
        noData: {
            embed: !0,
            object: "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
            applet: !0
        },
        hasData: function (e) {
            e = e.nodeType ? s.cache[e[s.expando]] : e[s.expando];
            return !!e && !h(e)
        },
        data: function (e, n, r, i) {
            if (!s.acceptData(e)) return;
            var o, u, a, f = s.expando,
                l = typeof n == "string",
                c = e.nodeType,
                h = c ? s.cache : e,
                p = c ? e[f] : e[f] && f,
                d = n === "events";
            if ((!p || !h[p] || !d && !i && !h[p].data) && l && r === t) return;
            p || (c ? e[f] = p = ++s.uuid : p = f);
            if (!h[p]) {
                h[p] = {};
                c || (h[p].toJSON = s.noop)
            }
            if (typeof n == "object" || typeof n == "function") i ? h[p] = s.extend(h[p], n) : h[p].data = s.extend(h[p].data, n);
            o = u = h[p];
            if (!i) {
                u.data || (u.data = {});
                u = u.data
            }
            r !== t && (u[s.camelCase(n)] = r);
            if (d && !u[n]) return o.events;
            if (l) {
                a = u[n];
                a == null && (a = u[s.camelCase(n)])
            } else a = u;
            return a
        },
        removeData: function (e, t, n) {
            if (!s.acceptData(e)) return;
            var r, i, o, u = s.expando,
                a = e.nodeType,
                f = a ? s.cache : e,
                l = a ? e[u] : u;
            if (!f[l]) return;
            if (t) {
                r = n ? f[l] : f[l].data;
                if (r) {
                    if (!s.isArray(t)) if (t in r) t = [t];
                    else {
                        t = s.camelCase(t);
                        t in r ? t = [t] : t = t.split(" ")
                    }
                    for (i = 0, o = t.length; i < o; i++) delete r[t[i]];
                    if (!(n ? h : s.isEmptyObject)(r)) return
                }
            }
            if (!n) {
                delete f[l].data;
                if (!h(f[l])) return
            }
            s.support.deleteExpando || !f.setInterval ? delete f[l] : f[l] = null;
            a && (s.support.deleteExpando ? delete e[u] : e.removeAttribute ? e.removeAttribute(u) : e[u] = null)
        },
        _data: function (e, t, n) {
            return s.data(e, t, n, !0)
        },
        acceptData: function (e) {
            if (e.nodeName) {
                var t = s.noData[e.nodeName.toLowerCase()];
                if (t) return t !== !0 && e.getAttribute("classid") === t
            }
            return !0
        }
    });
    s.fn.extend({
        data: function (e, n) {
            var r, i, o, u = null;
            if (typeof e == "undefined") {
                if (this.length) {
                    u = s.data(this[0]);
                    if (this[0].nodeType === 1 && !s._data(this[0], "parsedAttrs")) {
                        i = this[0].attributes;
                        for (var a = 0, f = i.length; a < f; a++) {
                            o = i[a].name;
                            if (o.indexOf("data-") === 0) {
                                o = s.camelCase(o.substring(5));
                                c(this[0], o, u[o])
                            }
                        }
                        s._data(this[0], "parsedAttrs", !0)
                    }
                }
                return u
            }
            if (typeof e == "object") return this.each(function () {
                s.data(this, e)
            });
            r = e.split(".");
            r[1] = r[1] ? "." + r[1] : "";
            if (n === t) {
                u = this.triggerHandler("getData" + r[1] + "!", [r[0]]);
                if (u === t && this.length) {
                    u = s.data(this[0], e);
                    u = c(this[0], e, u)
                }
                return u === t && r[1] ? this.data(r[0]) : u
            }
            return this.each(function () {
                var t = s(this),
                    i = [r[0], n];
                t.triggerHandler("setData" + r[1] + "!", i);
                s.data(this, e, n);
                t.triggerHandler("changeData" + r[1] + "!", i)
            })
        },
        removeData: function (e) {
            return this.each(function () {
                s.removeData(this, e)
            })
        }
    });
    s.extend({
        _mark: function (e, t) {
            if (e) {
                t = (t || "fx") + "mark";
                s._data(e, t, (s._data(e, t) || 0) + 1)
            }
        },
        _unmark: function (e, t, n) {
            if (e !== !0) {
                n = t;
                t = e;
                e = !1
            }
            if (t) {
                n = n || "fx";
                var r = n + "mark",
                    i = e ? 0 : (s._data(t, r) || 1) - 1;
                if (i) s._data(t, r, i);
                else {
                    s.removeData(t, r, !0);
                    p(t, n, "mark")
                }
            }
        },
        queue: function (e, t, n) {
            var r;
            if (e) {
                t = (t || "fx") + "queue";
                r = s._data(e, t);
                n && (!r || s.isArray(n) ? r = s._data(e, t, s.makeArray(n)) : r.push(n));
                return r || []
            }
        },
        dequeue: function (e, t) {
            t = t || "fx";
            var n = s.queue(e, t),
                r = n.shift(),
                i = {};
            r === "inprogress" && (r = n.shift());
            if (r) {
                t === "fx" && n.unshift("inprogress");
                s._data(e, t + ".run", i);
                r.call(e, function () {
                    s.dequeue(e, t)
                }, i)
            }
            if (!n.length) {
                s.removeData(e, t + "queue " + t + ".run", !0);
                p(e, t, "queue")
            }
        }
    });
    s.fn.extend({
        queue: function (e, n) {
            if (typeof e != "string") {
                n = e;
                e = "fx"
            }
            return n === t ? s.queue(this[0], e) : this.each(function () {
                var t = s.queue(this, e, n);
                e === "fx" && t[0] !== "inprogress" && s.dequeue(this, e)
            })
        },
        dequeue: function (e) {
            return this.each(function () {
                s.dequeue(this, e)
            })
        },
        delay: function (e, t) {
            e = s.fx ? s.fx.speeds[e] || e : e;
            t = t || "fx";
            return this.queue(t, function (t, n) {
                var r = setTimeout(t, e);
                n.stop = function () {
                    clearTimeout(r)
                }
            })
        },
        clearQueue: function (e) {
            return this.queue(e || "fx", [])
        },
        promise: function (e, n) {
            function h() {
                --u || r.resolveWith(i, [i])
            }
            if (typeof e != "string") {
                n = e;
                e = t
            }
            e = e || "fx";
            var r = s.Deferred(),
                i = this,
                o = i.length,
                u = 1,
                a = e + "defer",
                f = e + "queue",
                l = e + "mark",
                c;
            while (o--) if (c = s.data(i[o], a, t, !0) || (s.data(i[o], f, t, !0) || s.data(i[o], l, t, !0)) && s.data(i[o], a, s.Callbacks("once memory"), !0)) {
                u++;
                c.add(h)
            }
            h();
            return r.promise()
        }
    });
    var d = /[\n\t\r]/g,
        v = /\s+/,
        m = /\r/g,
        g = /^(?:button|input)$/i,
        y = /^(?:button|input|object|select|textarea)$/i,
        b = /^a(?:rea)?$/i,
        w = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
        E = s.support.getSetAttribute,
        S, x, T;
    s.fn.extend({
        attr: function (e, t) {
            return s.access(this, e, t, !0, s.attr)
        },
        removeAttr: function (e) {
            return this.each(function () {
                s.removeAttr(this, e)
            })
        },
        prop: function (e, t) {
            return s.access(this, e, t, !0, s.prop)
        },
        removeProp: function (e) {
            e = s.propFix[e] || e;
            return this.each(function () {
                try {
                    this[e] = t;
                    delete this[e]
                } catch (n) {}
            })
        },
        addClass: function (e) {
            var t, n, r, i, o, u, a;
            if (s.isFunction(e)) return this.each(function (t) {
                s(this).addClass(e.call(this, t, this.className))
            });
            if (e && typeof e == "string") {
                t = e.split(v);
                for (n = 0, r = this.length; n < r; n++) {
                    i = this[n];
                    if (i.nodeType === 1) if (!i.className && t.length === 1) i.className = e;
                    else {
                        o = " " + i.className + " ";
                        for (u = 0, a = t.length; u < a; u++)~o.indexOf(" " + t[u] + " ") || (o += t[u] + " ");
                        i.className = s.trim(o)
                    }
                }
            }
            return this
        },
        removeClass: function (e) {
            var n, r, i, o, u, a, f;
            if (s.isFunction(e)) return this.each(function (t) {
                s(this).removeClass(e.call(this, t, this.className))
            });
            if (e && typeof e == "string" || e === t) {
                n = (e || "").split(v);
                for (r = 0, i = this.length; r < i; r++) {
                    o = this[r];
                    if (o.nodeType === 1 && o.className) if (e) {
                        u = (" " + o.className + " ").replace(d, " ");
                        for (a = 0, f = n.length; a < f; a++) u = u.replace(" " + n[a] + " ", " ");
                        o.className = s.trim(u)
                    } else o.className = ""
                }
            }
            return this
        },
        toggleClass: function (e, t) {
            var n = typeof e,
                r = typeof t == "boolean";
            return s.isFunction(e) ? this.each(function (n) {
                s(this).toggleClass(e.call(this, n, this.className, t), t)
            }) : this.each(function () {
                if (n === "string") {
                    var i, o = 0,
                        u = s(this),
                        a = t,
                        f = e.split(v);
                    while (i = f[o++]) {
                        a = r ? a : !u.hasClass(i);
                        u[a ? "addClass" : "removeClass"](i)
                    }
                } else if (n === "undefined" || n === "boolean") {
                    this.className && s._data(this, "__className__", this.className);
                    this.className = this.className || e === !1 ? "" : s._data(this, "__className__") || ""
                }
            })
        },
        hasClass: function (e) {
            var t = " " + e + " ",
                n = 0,
                r = this.length;
            for (; n < r; n++) if (this[n].nodeType === 1 && (" " + this[n].className + " ").replace(d, " ").indexOf(t) > -1) return !0;
            return !1
        },
        val: function (e) {
            var n, r, i, o = this[0];
            if (!arguments.length) {
                if (o) {
                    n = s.valHooks[o.nodeName.toLowerCase()] || s.valHooks[o.type];
                    if (n && "get" in n && (r = n.get(o, "value")) !== t) return r;
                    r = o.value;
                    return typeof r == "string" ? r.replace(m, "") : r == null ? "" : r
                }
                return
            }
            i = s.isFunction(e);
            return this.each(function (r) {
                var o = s(this),
                    u;
                if (this.nodeType !== 1) return;
                i ? u = e.call(this, r, o.val()) : u = e;
                u == null ? u = "" : typeof u == "number" ? u += "" : s.isArray(u) && (u = s.map(u, function (e) {
                    return e == null ? "" : e + ""
                }));
                n = s.valHooks[this.nodeName.toLowerCase()] || s.valHooks[this.type];
                if (!n || !("set" in n) || n.set(this, u, "value") === t) this.value = u
            })
        }
    });
    s.extend({
        valHooks: {
            option: {
                get: function (e) {
                    var t = e.attributes.value;
                    return !t || t.specified ? e.value : e.text
                }
            },
            select: {
                get: function (e) {
                    var t, n, r, i, o = e.selectedIndex,
                        u = [],
                        a = e.options,
                        f = e.type === "select-one";
                    if (o < 0) return null;
                    n = f ? o : 0;
                    r = f ? o + 1 : a.length;
                    for (; n < r; n++) {
                        i = a[n];
                        if (i.selected && (s.support.optDisabled ? !i.disabled : i.getAttribute("disabled") === null) && (!i.parentNode.disabled || !s.nodeName(i.parentNode, "optgroup"))) {
                            t = s(i).val();
                            if (f) return t;
                            u.push(t)
                        }
                    }
                    return f && !u.length && a.length ? s(a[o]).val() : u
                },
                set: function (e, t) {
                    var n = s.makeArray(t);
                    s(e).find("option").each(function () {
                        this.selected = s.inArray(s(this).val(), n) >= 0
                    });
                    n.length || (e.selectedIndex = -1);
                    return n
                }
            }
        },
        attrFn: {
            val: !0,
            css: !0,
            html: !0,
            text: !0,
            data: !0,
            width: !0,
            height: !0,
            offset: !0
        },
        attr: function (e, n, r, i) {
            var o, u, a, f = e.nodeType;
            if (!e || f === 3 || f === 8 || f === 2) return;
            if (i && n in s.attrFn) return s(e)[n](r);
            if (typeof e.getAttribute == "undefined") return s.prop(e, n, r);
            a = f !== 1 || !s.isXMLDoc(e);
            if (a) {
                n = n.toLowerCase();
                u = s.attrHooks[n] || (w.test(n) ? x : S)
            }
            if (r !== t) {
                if (r === null) {
                    s.removeAttr(e, n);
                    return
                }
                if (u && "set" in u && a && (o = u.set(e, r, n)) !== t) return o;
                e.setAttribute(n, "" + r);
                return r
            }
            if (u && "get" in u && a && (o = u.get(e, n)) !== null) return o;
            o = e.getAttribute(n);
            return o === null ? t : o
        },
        removeAttr: function (e, t) {
            var n, r, i, o, u = 0;
            if (t && e.nodeType === 1) {
                r = t.toLowerCase().split(v);
                o = r.length;
                for (; u < o; u++) {
                    i = r[u];
                    if (i) {
                        n = s.propFix[i] || i;
                        s.attr(e, i, "");
                        e.removeAttribute(E ? i : n);
                        w.test(i) && n in e && (e[n] = !1)
                    }
                }
            }
        },
        attrHooks: {
            type: {
                set: function (e, t) {
                    if (g.test(e.nodeName) && e.parentNode) s.error("type property can't be changed");
                    else if (!s.support.radioValue && t === "radio" && s.nodeName(e, "input")) {
                        var n = e.value;
                        e.setAttribute("type", t);
                        n && (e.value = n);
                        return t
                    }
                }
            },
            value: {
                get: function (e, t) {
                    return S && s.nodeName(e, "button") ? S.get(e, t) : t in e ? e.value : null
                },
                set: function (e, t, n) {
                    if (S && s.nodeName(e, "button")) return S.set(e, t, n);
                    e.value = t
                }
            }
        },
        propFix: {
            tabindex: "tabIndex",
            readonly: "readOnly",
            "for": "htmlFor",
            "class": "className",
            maxlength: "maxLength",
            cellspacing: "cellSpacing",
            cellpadding: "cellPadding",
            rowspan: "rowSpan",
            colspan: "colSpan",
            usemap: "useMap",
            frameborder: "frameBorder",
            contenteditable: "contentEditable"
        },
        prop: function (e, n, r) {
            var i, o, u, a = e.nodeType;
            if (!e || a === 3 || a === 8 || a === 2) return;
            u = a !== 1 || !s.isXMLDoc(e);
            if (u) {
                n = s.propFix[n] || n;
                o = s.propHooks[n]
            }
            return r !== t ? o && "set" in o && (i = o.set(e, r, n)) !== t ? i : e[n] = r : o && "get" in o && (i = o.get(e, n)) !== null ? i : e[n]
        },
        propHooks: {
            tabIndex: {
                get: function (e) {
                    var n = e.getAttributeNode("tabindex");
                    return n && n.specified ? parseInt(n.value, 10) : y.test(e.nodeName) || b.test(e.nodeName) && e.href ? 0 : t
                }
            }
        }
    });
    s.attrHooks.tabindex = s.propHooks.tabIndex;
    x = {
        get: function (e, n) {
            var r, i = s.prop(e, n);
            return i === !0 || typeof i != "boolean" && (r = e.getAttributeNode(n)) && r.nodeValue !== !1 ? n.toLowerCase() : t
        },
        set: function (e, t, n) {
            var r;
            if (t === !1) s.removeAttr(e, n);
            else {
                r = s.propFix[n] || n;
                r in e && (e[r] = !0);
                e.setAttribute(n, n.toLowerCase())
            }
            return n
        }
    };
    if (!E) {
        T = {
            name: !0,
            id: !0
        };
        S = s.valHooks.button = {
            get: function (e, n) {
                var r;
                r = e.getAttributeNode(n);
                return r && (T[n] ? r.nodeValue !== "" : r.specified) ? r.nodeValue : t
            },
            set: function (e, t, r) {
                var i = e.getAttributeNode(r);
                if (!i) {
                    i = n.createAttribute(r);
                    e.setAttributeNode(i)
                }
                return i.nodeValue = t + ""
            }
        };
        s.attrHooks.tabindex.set = S.set;
        s.each(["width", "height"], function (e, t) {
            s.attrHooks[t] = s.extend(s.attrHooks[t], {
                set: function (e, n) {
                    if (n === "") {
                        e.setAttribute(t, "auto");
                        return n
                    }
                }
            })
        });
        s.attrHooks.contenteditable = {
            get: S.get,
            set: function (e, t, n) {
                t === "" && (t = "false");
                S.set(e, t, n)
            }
        }
    }
    s.support.hrefNormalized || s.each(["href", "src", "width", "height"], function (e, n) {
        s.attrHooks[n] = s.extend(s.attrHooks[n], {
            get: function (e) {
                var r = e.getAttribute(n, 2);
                return r === null ? t : r
            }
        })
    });
    s.support.style || (s.attrHooks.style = {
        get: function (e) {
            return e.style.cssText.toLowerCase() || t
        },
        set: function (e, t) {
            return e.style.cssText = "" + t
        }
    });
    s.support.optSelected || (s.propHooks.selected = s.extend(s.propHooks.selected, {
        get: function (e) {
            var t = e.parentNode;
            if (t) {
                t.selectedIndex;
                t.parentNode && t.parentNode.selectedIndex
            }
            return null
        }
    }));
    s.support.enctype || (s.propFix.enctype = "encoding");
    s.support.checkOn || s.each(["radio", "checkbox"], function () {
        s.valHooks[this] = {
            get: function (e) {
                return e.getAttribute("value") === null ? "on" : e.value
            }
        }
    });
    s.each(["radio", "checkbox"], function () {
        s.valHooks[this] = s.extend(s.valHooks[this], {
            set: function (e, t) {
                if (s.isArray(t)) return e.checked = s.inArray(s(e).val(), t) >= 0
            }
        })
    });
    var N = /^(?:textarea|input|select)$/i,
        C = /^([^\.]*)?(?:\.(.+))?$/,
        k = /\bhover(\.\S+)?\b/,
        L = /^key/,
        A = /^(?:mouse|contextmenu)|click/,
        O = /^(?:focusinfocus|focusoutblur)$/,
        M = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
        _ = function (e) {
            var t = M.exec(e);
            if (t) {
                t[1] = (t[1] || "").toLowerCase();
                t[3] = t[3] && new RegExp("(?:^|\\s)" + t[3] + "(?:\\s|$)")
            }
            return t
        }, D = function (e, t) {
            var n = e.attributes || {};
            return (!t[1] || e.nodeName.toLowerCase() === t[1]) && (!t[2] || (n.id || {}).value === t[2]) && (!t[3] || t[3].test((n["class"] || {}).value))
        }, P = function (e) {
            return s.event.special.hover ? e : e.replace(k, "mouseenter$1 mouseleave$1")
        };
    s.event = {
        add: function (e, n, r, i, o) {
            var u, a, f, l, c, h, p, d, v, m, g, y;
            if (e.nodeType === 3 || e.nodeType === 8 || !n || !r || !(u = s._data(e))) return;
            if (r.handler) {
                v = r;
                r = v.handler
            }
            r.guid || (r.guid = s.guid++);
            f = u.events;
            f || (u.events = f = {});
            a = u.handle;
            if (!a) {
                u.handle = a = function (e) {
                    return typeof s == "undefined" || !! e && s.event.triggered === e.type ? t : s.event.dispatch.apply(a.elem, arguments)
                };
                a.elem = e
            }
            n = s.trim(P(n)).split(" ");
            for (l = 0; l < n.length; l++) {
                c = C.exec(n[l]) || [];
                h = c[1];
                p = (c[2] || "").split(".").sort();
                y = s.event.special[h] || {};
                h = (o ? y.delegateType : y.bindType) || h;
                y = s.event.special[h] || {};
                d = s.extend({
                    type: h,
                    origType: c[1],
                    data: i,
                    handler: r,
                    guid: r.guid,
                    selector: o,
                    quick: _(o),
                    namespace: p.join(".")
                }, v);
                g = f[h];
                if (!g) {
                    g = f[h] = [];
                    g.delegateCount = 0;
                    if (!y.setup || y.setup.call(e, i, p, a) === !1) e.addEventListener ? e.addEventListener(h, a, !1) : e.attachEvent && e.attachEvent("on" + h, a)
                }
                if (y.add) {
                    y.add.call(e, d);
                    d.handler.guid || (d.handler.guid = r.guid)
                }
                o ? g.splice(g.delegateCount++, 0, d) : g.push(d);
                s.event.global[h] = !0
            }
            e = null
        },
        global: {},
        remove: function (e, t, n, r, i) {
            var o = s.hasData(e) && s._data(e),
                u, a, f, l, c, h, p, d, v, m, g, y;
            if (!o || !(d = o.events)) return;
            t = s.trim(P(t || "")).split(" ");
            for (u = 0; u < t.length; u++) {
                a = C.exec(t[u]) || [];
                f = l = a[1];
                c = a[2];
                if (!f) {
                    for (f in d) s.event.remove(e, f + t[u], n, r, !0);
                    continue
                }
                v = s.event.special[f] || {};
                f = (r ? v.delegateType : v.bindType) || f;
                g = d[f] || [];
                h = g.length;
                c = c ? new RegExp("(^|\\.)" + c.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
                for (p = 0; p < g.length; p++) {
                    y = g[p];
                    if ((i || l === y.origType) && (!n || n.guid === y.guid) && (!c || c.test(y.namespace)) && (!r || r === y.selector || r === "**" && y.selector)) {
                        g.splice(p--, 1);
                        y.selector && g.delegateCount--;
                        v.remove && v.remove.call(e, y)
                    }
                }
                if (g.length === 0 && h !== g.length) {
                    (!v.teardown || v.teardown.call(e, c) === !1) && s.removeEvent(e, f, o.handle);
                    delete d[f]
                }
            }
            if (s.isEmptyObject(d)) {
                m = o.handle;
                m && (m.elem = null);
                s.removeData(e, ["events", "handle"], !0)
            }
        },
        customEvent: {
            getData: !0,
            setData: !0,
            changeData: !0
        },
        trigger: function (n, r, i, o) {
            if (!i || i.nodeType !== 3 && i.nodeType !== 8) {
                var u = n.type || n,
                    a = [],
                    f, l, c, h, p, d, v, m, g, y;
                if (O.test(u + s.event.triggered)) return;
                if (u.indexOf("!") >= 0) {
                    u = u.slice(0, -1);
                    l = !0
                }
                if (u.indexOf(".") >= 0) {
                    a = u.split(".");
                    u = a.shift();
                    a.sort()
                }
                if ((!i || s.event.customEvent[u]) && !s.event.global[u]) return;
                n = typeof n == "object" ? n[s.expando] ? n : new s.Event(u, n) : new s.Event(u);
                n.type = u;
                n.isTrigger = !0;
                n.exclusive = l;
                n.namespace = a.join(".");
                n.namespace_re = n.namespace ? new RegExp("(^|\\.)" + a.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
                d = u.indexOf(":") < 0 ? "on" + u : "";
                if (!i) {
                    f = s.cache;
                    for (c in f) f[c].events && f[c].events[u] && s.event.trigger(n, r, f[c].handle.elem, !0);
                    return
                }
                n.result = t;
                n.target || (n.target = i);
                r = r != null ? s.makeArray(r) : [];
                r.unshift(n);
                v = s.event.special[u] || {};
                if (v.trigger && v.trigger.apply(i, r) === !1) return;
                g = [
                    [i, v.bindType || u]
                ];
                if (!o && !v.noBubble && !s.isWindow(i)) {
                    y = v.delegateType || u;
                    h = O.test(y + u) ? i : i.parentNode;
                    p = null;
                    for (; h; h = h.parentNode) {
                        g.push([h, y]);
                        p = h
                    }
                    p && p === i.ownerDocument && g.push([p.defaultView || p.parentWindow || e, y])
                }
                for (c = 0; c < g.length && !n.isPropagationStopped(); c++) {
                    h = g[c][0];
                    n.type = g[c][1];
                    m = (s._data(h, "events") || {})[n.type] && s._data(h, "handle");
                    m && m.apply(h, r);
                    m = d && h[d];
                    m && s.acceptData(h) && m.apply(h, r) === !1 && n.preventDefault()
                }
                n.type = u;
                if (!o && !n.isDefaultPrevented() && (!v._default || v._default.apply(i.ownerDocument, r) === !1) && (u !== "click" || !s.nodeName(i, "a")) && s.acceptData(i) && d && i[u] && (u !== "focus" && u !== "blur" || n.target.offsetWidth !== 0) && !s.isWindow(i)) {
                    p = i[d];
                    p && (i[d] = null);
                    s.event.triggered = u;
                    i[u]();
                    s.event.triggered = t;
                    p && (i[d] = p)
                }
                return n.result
            }
            return
        },
        dispatch: function (n) {
            n = s.event.fix(n || e.event);
            var r = (s._data(this, "events") || {})[n.type] || [],
                i = r.delegateCount,
                o = [].slice.call(arguments, 0),
                u = !n.exclusive && !n.namespace,
                a = [],
                f, l, c, h, p, d, v, m, g, y, b;
            o[0] = n;
            n.delegateTarget = this;
            if (i && !n.target.disabled && (!n.button || n.type !== "click")) {
                h = s(this);
                h.context = this.ownerDocument || this;
                for (c = n.target; c != this; c = c.parentNode || this) {
                    d = {};
                    m = [];
                    h[0] = c;
                    for (f = 0; f < i; f++) {
                        g = r[f];
                        y = g.selector;
                        d[y] === t && (d[y] = g.quick ? D(c, g.quick) : h.is(y));
                        d[y] && m.push(g)
                    }
                    m.length && a.push({
                        elem: c,
                        matches: m
                    })
                }
            }
            r.length > i && a.push({
                elem: this,
                matches: r.slice(i)
            });
            for (f = 0; f < a.length && !n.isPropagationStopped(); f++) {
                v = a[f];
                n.currentTarget = v.elem;
                for (l = 0; l < v.matches.length && !n.isImmediatePropagationStopped(); l++) {
                    g = v.matches[l];
                    if (u || !n.namespace && !g.namespace || n.namespace_re && n.namespace_re.test(g.namespace)) {
                        n.data = g.data;
                        n.handleObj = g;
                        p = ((s.event.special[g.origType] || {}).handle || g.handler).apply(v.elem, o);
                        if (p !== t) {
                            n.result = p;
                            if (p === !1) {
                                n.preventDefault();
                                n.stopPropagation()
                            }
                        }
                    }
                }
            }
            return n.result
        },
        props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
        fixHooks: {},
        keyHooks: {
            props: "char charCode key keyCode".split(" "),
            filter: function (e, t) {
                e.which == null && (e.which = t.charCode != null ? t.charCode : t.keyCode);
                return e
            }
        },
        mouseHooks: {
            props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
            filter: function (e, r) {
                var i, s, o, u = r.button,
                    a = r.fromElement;
                if (e.pageX == null && r.clientX != null) {
                    i = e.target.ownerDocument || n;
                    s = i.documentElement;
                    o = i.body;
                    e.pageX = r.clientX + (s && s.scrollLeft || o && o.scrollLeft || 0) - (s && s.clientLeft || o && o.clientLeft || 0);
                    e.pageY = r.clientY + (s && s.scrollTop || o && o.scrollTop || 0) - (s && s.clientTop || o && o.clientTop || 0)
                }!e.relatedTarget && a && (e.relatedTarget = a === e.target ? r.toElement : a);
                !e.which && u !== t && (e.which = u & 1 ? 1 : u & 2 ? 3 : u & 4 ? 2 : 0);
                return e
            }
        },
        fix: function (e) {
            if (e[s.expando]) return e;
            var r, i, o = e,
                u = s.event.fixHooks[e.type] || {}, a = u.props ? this.props.concat(u.props) : this.props;
            e = s.Event(o);
            for (r = a.length; r;) {
                i = a[--r];
                e[i] = o[i]
            }
            e.target || (e.target = o.srcElement || n);
            e.target.nodeType === 3 && (e.target = e.target.parentNode);
            e.metaKey === t && (e.metaKey = e.ctrlKey);
            return u.filter ? u.filter(e, o) : e
        },
        special: {
            ready: {
                setup: s.bindReady
            },
            load: {
                noBubble: !0
            },
            focus: {
                delegateType: "focusin"
            },
            blur: {
                delegateType: "focusout"
            },
            beforeunload: {
                setup: function (e, t, n) {
                    s.isWindow(this) && (this.onbeforeunload = n)
                },
                teardown: function (e, t) {
                    this.onbeforeunload === t && (this.onbeforeunload = null)
                }
            }
        },
        simulate: function (e, t, n, r) {
            var i = s.extend(new s.Event, n, {
                type: e,
                isSimulated: !0,
                originalEvent: {}
            });
            r ? s.event.trigger(i, null, t) : s.event.dispatch.call(t, i);
            i.isDefaultPrevented() && n.preventDefault()
        }
    };
    s.event.handle = s.event.dispatch;
    s.removeEvent = n.removeEventListener ? function (e, t, n) {
        e.removeEventListener && e.removeEventListener(t, n, !1)
    } : function (e, t, n) {
        e.detachEvent && e.detachEvent("on" + t, n)
    };
    s.Event = function (e, t) {
        if (!(this instanceof s.Event)) return new s.Event(e, t);
        if (e && e.type) {
            this.originalEvent = e;
            this.type = e.type;
            this.isDefaultPrevented = e.defaultPrevented || e.returnValue === !1 || e.getPreventDefault && e.getPreventDefault() ? B : H
        } else this.type = e;
        t && s.extend(this, t);
        this.timeStamp = e && e.timeStamp || s.now();
        this[s.expando] = !0
    };
    s.Event.prototype = {
        preventDefault: function () {
            this.isDefaultPrevented = B;
            var e = this.originalEvent;
            if (!e) return;
            e.preventDefault ? e.preventDefault() : e.returnValue = !1
        },
        stopPropagation: function () {
            this.isPropagationStopped = B;
            var e = this.originalEvent;
            if (!e) return;
            e.stopPropagation && e.stopPropagation();
            e.cancelBubble = !0
        },
        stopImmediatePropagation: function () {
            this.isImmediatePropagationStopped = B;
            this.stopPropagation()
        },
        isDefaultPrevented: H,
        isPropagationStopped: H,
        isImmediatePropagationStopped: H
    };
    s.each({
        mouseenter: "mouseover",
        mouseleave: "mouseout"
    }, function (e, t) {
        s.event.special[e] = {
            delegateType: t,
            bindType: t,
            handle: function (e) {
                var n = this,
                    r = e.relatedTarget,
                    i = e.handleObj,
                    o = i.selector,
                    u;
                if (!r || r !== n && !s.contains(n, r)) {
                    e.type = i.origType;
                    u = i.handler.apply(this, arguments);
                    e.type = t
                }
                return u
            }
        }
    });
    s.support.submitBubbles || (s.event.special.submit = {
        setup: function () {
            if (s.nodeName(this, "form")) return !1;
            s.event.add(this, "click._submit keypress._submit", function (e) {
                var n = e.target,
                    r = s.nodeName(n, "input") || s.nodeName(n, "button") ? n.form : t;
                if (r && !r._submit_attached) {
                    s.event.add(r, "submit._submit", function (e) {
                        this.parentNode && !e.isTrigger && s.event.simulate("submit", this.parentNode, e, !0)
                    });
                    r._submit_attached = !0
                }
            })
        },
        teardown: function () {
            if (s.nodeName(this, "form")) return !1;
            s.event.remove(this, "._submit")
        }
    });
    s.support.changeBubbles || (s.event.special.change = {
        setup: function () {
            if (N.test(this.nodeName)) {
                if (this.type === "checkbox" || this.type === "radio") {
                    s.event.add(this, "propertychange._change", function (e) {
                        e.originalEvent.propertyName === "checked" && (this._just_changed = !0)
                    });
                    s.event.add(this, "click._change", function (e) {
                        if (this._just_changed && !e.isTrigger) {
                            this._just_changed = !1;
                            s.event.simulate("change", this, e, !0)
                        }
                    })
                }
                return !1
            }
            s.event.add(this, "beforeactivate._change", function (e) {
                var t = e.target;
                if (N.test(t.nodeName) && !t._change_attached) {
                    s.event.add(t, "change._change", function (e) {
                        this.parentNode && !e.isSimulated && !e.isTrigger && s.event.simulate("change", this.parentNode, e, !0)
                    });
                    t._change_attached = !0
                }
            })
        },
        handle: function (e) {
            var t = e.target;
            if (this !== t || e.isSimulated || e.isTrigger || t.type !== "radio" && t.type !== "checkbox") return e.handleObj.handler.apply(this, arguments)
        },
        teardown: function () {
            s.event.remove(this, "._change");
            return N.test(this.nodeName)
        }
    });
    s.support.focusinBubbles || s.each({
        focus: "focusin",
        blur: "focusout"
    }, function (e, t) {
        var r = 0,
            i = function (e) {
                s.event.simulate(t, e.target, s.event.fix(e), !0)
            };
        s.event.special[t] = {
            setup: function () {
                r++ === 0 && n.addEventListener(e, i, !0)
            },
            teardown: function () {
                --r === 0 && n.removeEventListener(e, i, !0)
            }
        }
    });
    s.fn.extend({
        on: function (e, n, r, i, o) {
            var u, a;
            if (typeof e == "object") {
                if (typeof n != "string") {
                    r = n;
                    n = t
                }
                for (a in e) this.on(a, n, r, e[a], o);
                return this
            }
            if (r == null && i == null) {
                i = n;
                r = n = t
            } else if (i == null) if (typeof n == "string") {
                i = r;
                r = t
            } else {
                i = r;
                r = n;
                n = t
            }
            if (i === !1) i = H;
            else if (!i) return this;
            if (o === 1) {
                u = i;
                i = function (e) {
                    s().off(e);
                    return u.apply(this, arguments)
                };
                i.guid = u.guid || (u.guid = s.guid++)
            }
            return this.each(function () {
                s.event.add(this, e, i, r, n)
            })
        },
        one: function (e, t, n, r) {
            return this.on.call(this, e, t, n, r, 1)
        },
        off: function (e, n, r) {
            if (e && e.preventDefault && e.handleObj) {
                var i = e.handleObj;
                s(e.delegateTarget).off(i.namespace ? i.type + "." + i.namespace : i.type, i.selector, i.handler);
                return this
            }
            if (typeof e == "object") {
                for (var o in e) this.off(o, n, e[o]);
                return this
            }
            if (n === !1 || typeof n == "function") {
                r = n;
                n = t
            }
            r === !1 && (r = H);
            return this.each(function () {
                s.event.remove(this, e, r, n)
            })
        },
        bind: function (e, t, n) {
            return this.on(e, null, t, n)
        },
        unbind: function (e, t) {
            return this.off(e, null, t)
        },
        live: function (e, t, n) {
            s(this.context).on(e, this.selector, t, n);
            return this
        },
        die: function (e, t) {
            s(this.context).off(e, this.selector || "**", t);
            return this
        },
        delegate: function (e, t, n, r) {
            return this.on(t, e, n, r)
        },
        undelegate: function (e, t, n) {
            return arguments.length == 1 ? this.off(e, "**") : this.off(t, e, n)
        },
        trigger: function (e, t) {
            return this.each(function () {
                s.event.trigger(e, t, this)
            })
        },
        triggerHandler: function (e, t) {
            if (this[0]) return s.event.trigger(e, t, this[0], !0)
        },
        toggle: function (e) {
            var t = arguments,
                n = e.guid || s.guid++,
                r = 0,
                i = function (n) {
                    var i = (s._data(this, "lastToggle" + e.guid) || 0) % r;
                    s._data(this, "lastToggle" + e.guid, i + 1);
                    n.preventDefault();
                    return t[i].apply(this, arguments) || !1
                };
            i.guid = n;
            while (r < t.length) t[r++].guid = n;
            return this.click(i)
        },
        hover: function (e, t) {
            return this.mouseenter(e).mouseleave(t || e)
        }
    });
    s.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "), function (e, t) {
        s.fn[t] = function (e, n) {
            if (n == null) {
                n = e;
                e = null
            }
            return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t)
        };
        s.attrFn && (s.attrFn[t] = !0);
        L.test(t) && (s.event.fixHooks[t] = s.event.keyHooks);
        A.test(t) && (s.event.fixHooks[t] = s.event.mouseHooks)
    });
    (function () {
        function S(e, t, n, i, s, o) {
            for (var u = 0, a = i.length; u < a; u++) {
                var f = i[u];
                if (f) {
                    var l = !1;
                    f = f[e];
                    while (f) {
                        if (f[r] === n) {
                            l = i[f.sizset];
                            break
                        }
                        if (f.nodeType === 1 && !o) {
                            f[r] = n;
                            f.sizset = u
                        }
                        if (f.nodeName.toLowerCase() === t) {
                            l = f;
                            break
                        }
                        f = f[e]
                    }
                    i[u] = l
                }
            }
        }
        function x(e, t, n, i, s, o) {
            for (var u = 0, a = i.length; u < a; u++) {
                var f = i[u];
                if (f) {
                    var l = !1;
                    f = f[e];
                    while (f) {
                        if (f[r] === n) {
                            l = i[f.sizset];
                            break
                        }
                        if (f.nodeType === 1) {
                            if (!o) {
                                f[r] = n;
                                f.sizset = u
                            }
                            if (typeof t != "string") {
                                if (f === t) {
                                    l = !0;
                                    break
                                }
                            } else if (h.filter(t, [f]).length > 0) {
                                l = f;
                                break
                            }
                        }
                        f = f[e]
                    }
                    i[u] = l
                }
            }
        }
        var e = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
            r = "sizcache" + (Math.random() + "").replace(".", ""),
            i = 0,
            o = Object.prototype.toString,
            u = !1,
            a = !0,
            f = /\\/g,
            l = /\r\n/g,
            c = /\W/;
        [0, 0].sort(function () {
            a = !1;
            return 0
        });
        var h = function (t, r, i, s) {
            i = i || [];
            r = r || n;
            var u = r;
            if (r.nodeType !== 1 && r.nodeType !== 9) return [];
            if (!t || typeof t != "string") return i;
            var a, f, l, c, p, m, g, b, w = !0,
                E = h.isXML(r),
                S = [],
                x = t;
            do {
                e.exec("");
                a = e.exec(x);
                if (a) {
                    x = a[3];
                    S.push(a[1]);
                    if (a[2]) {
                        c = a[3];
                        break
                    }
                }
            } while (a);
            if (S.length > 1 && v.exec(t)) if (S.length === 2 && d.relative[S[0]]) f = T(S[0] + S[1], r, s);
            else {
                f = d.relative[S[0]] ? [r] : h(S.shift(), r);
                while (S.length) {
                    t = S.shift();
                    d.relative[t] && (t += S.shift());
                    f = T(t, f, s)
                }
            } else {
                if (!s && S.length > 1 && r.nodeType === 9 && !E && d.match.ID.test(S[0]) && !d.match.ID.test(S[S.length - 1])) {
                    p = h.find(S.shift(), r, E);
                    r = p.expr ? h.filter(p.expr, p.set)[0] : p.set[0]
                }
                if (r) {
                    p = s ? {
                        expr: S.pop(),
                        set: y(s)
                    } : h.find(S.pop(), S.length !== 1 || S[0] !== "~" && S[0] !== "+" || !r.parentNode ? r : r.parentNode, E);
                    f = p.expr ? h.filter(p.expr, p.set) : p.set;
                    S.length > 0 ? l = y(f) : w = !1;
                    while (S.length) {
                        m = S.pop();
                        g = m;
                        d.relative[m] ? g = S.pop() : m = "";
                        g == null && (g = r);
                        d.relative[m](l, g, E)
                    }
                } else l = S = []
            }
            l || (l = f);
            l || h.error(m || t);
            if (o.call(l) === "[object Array]") if (!w) i.push.apply(i, l);
            else if (r && r.nodeType === 1) for (b = 0; l[b] != null; b++) l[b] && (l[b] === !0 || l[b].nodeType === 1 && h.contains(r, l[b])) && i.push(f[b]);
            else for (b = 0; l[b] != null; b++) l[b] && l[b].nodeType === 1 && i.push(f[b]);
            else y(l, i);
            if (c) {
                h(c, u, i, s);
                h.uniqueSort(i)
            }
            return i
        };
        h.uniqueSort = function (e) {
            if (w) {
                u = a;
                e.sort(w);
                if (u) for (var t = 1; t < e.length; t++) e[t] === e[t - 1] && e.splice(t--, 1)
            }
            return e
        };
        h.matches = function (e, t) {
            return h(e, null, null, t)
        };
        h.matchesSelector = function (e, t) {
            return h(t, null, null, [e]).length > 0
        };
        h.find = function (e, t, n) {
            var r, i, s, o, u, a;
            if (!e) return [];
            for (i = 0, s = d.order.length; i < s; i++) {
                u = d.order[i];
                if (o = d.leftMatch[u].exec(e)) {
                    a = o[1];
                    o.splice(1, 1);
                    if (a.substr(a.length - 1) !== "\\") {
                        o[1] = (o[1] || "").replace(f, "");
                        r = d.find[u](o, t, n);
                        if (r != null) {
                            e = e.replace(d.match[u], "");
                            break
                        }
                    }
                }
            }
            r || (r = typeof t.getElementsByTagName != "undefined" ? t.getElementsByTagName("*") : []);
            return {
                set: r,
                expr: e
            }
        };
        h.filter = function (e, n, r, i) {
            var s, o, u, a, f, l, c, p, v, m = e,
                g = [],
                y = n,
                b = n && n[0] && h.isXML(n[0]);
            while (e && n.length) {
                for (u in d.filter) if ((s = d.leftMatch[u].exec(e)) != null && s[2]) {
                    l = d.filter[u];
                    c = s[1];
                    o = !1;
                    s.splice(1, 1);
                    if (c.substr(c.length - 1) === "\\") continue;
                    y === g && (g = []);
                    if (d.preFilter[u]) {
                        s = d.preFilter[u](s, y, r, g, i, b);
                        if (!s) o = a = !0;
                        else if (s === !0) continue
                    }
                    if (s) for (p = 0;
                    (f = y[p]) != null; p++) if (f) {
                        a = l(f, s, p, y);
                        v = i ^ a;
                        if (r && a != null) v ? o = !0 : y[p] = !1;
                        else if (v) {
                            g.push(f);
                            o = !0
                        }
                    }
                    if (a !== t) {
                        r || (y = g);
                        e = e.replace(d.match[u], "");
                        if (!o) return [];
                        break
                    }
                }
                if (e === m) {
                    if (o != null) break;
                    h.error(e)
                }
                m = e
            }
            return y
        };
        h.error = function (e) {
            throw new Error("Syntax error, unrecognized expression: " + e)
        };
        var p = h.getText = function (e) {
            var t, n, r = e.nodeType,
                i = "";
            if (r) {
                if (r === 1 || r === 9) {
                    if (typeof e.textContent == "string") return e.textContent;
                    if (typeof e.innerText == "string") return e.innerText.replace(l, "");
                    for (e = e.firstChild; e; e = e.nextSibling) i += p(e)
                } else if (r === 3 || r === 4) return e.nodeValue
            } else for (t = 0; n = e[t]; t++) n.nodeType !== 8 && (i += p(n));
            return i
        }, d = h.selectors = {
            order: ["ID", "NAME", "TAG"],
            match: {
                ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
                CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
                NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
                ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
                TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
                CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
                POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
                PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
            },
            leftMatch: {},
            attrMap: {
                "class": "className",
                "for": "htmlFor"
            },
            attrHandle: {
                href: function (e) {
                    return e.getAttribute("href")
                },
                type: function (e) {
                    return e.getAttribute("type")
                }
            },
            relative: {
                "+": function (e, t) {
                    var n = typeof t == "string",
                        r = n && !c.test(t),
                        i = n && !r;
                    r && (t = t.toLowerCase());
                    for (var s = 0, o = e.length, u; s < o; s++) if (u = e[s]) {
                        while ((u = u.previousSibling) && u.nodeType !== 1);
                        e[s] = i || u && u.nodeName.toLowerCase() === t ? u || !1 : u === t
                    }
                    i && h.filter(t, e, !0)
                },
                ">": function (e, t) {
                    var n, r = typeof t == "string",
                        i = 0,
                        s = e.length;
                    if (r && !c.test(t)) {
                        t = t.toLowerCase();
                        for (; i < s; i++) {
                            n = e[i];
                            if (n) {
                                var o = n.parentNode;
                                e[i] = o.nodeName.toLowerCase() === t ? o : !1
                            }
                        }
                    } else {
                        for (; i < s; i++) {
                            n = e[i];
                            n && (e[i] = r ? n.parentNode : n.parentNode === t)
                        }
                        r && h.filter(t, e, !0)
                    }
                },
                "": function (e, t, n) {
                    var r, s = i++,
                        o = x;
                    if (typeof t == "string" && !c.test(t)) {
                        t = t.toLowerCase();
                        r = t;
                        o = S
                    }
                    o("parentNode", t, s, e, r, n)
                },
                "~": function (e, t, n) {
                    var r, s = i++,
                        o = x;
                    if (typeof t == "string" && !c.test(t)) {
                        t = t.toLowerCase();
                        r = t;
                        o = S
                    }
                    o("previousSibling", t, s, e, r, n)
                }
            },
            find: {
                ID: function (e, t, n) {
                    if (typeof t.getElementById != "undefined" && !n) {
                        var r = t.getElementById(e[1]);
                        return r && r.parentNode ? [r] : []
                    }
                },
                NAME: function (e, t) {
                    if (typeof t.getElementsByName != "undefined") {
                        var n = [],
                            r = t.getElementsByName(e[1]);
                        for (var i = 0, s = r.length; i < s; i++) r[i].getAttribute("name") === e[1] && n.push(r[i]);
                        return n.length === 0 ? null : n
                    }
                },
                TAG: function (e, t) {
                    if (typeof t.getElementsByTagName != "undefined") return t.getElementsByTagName(e[1])
                }
            },
            preFilter: {
                CLASS: function (e, t, n, r, i, s) {
                    e = " " + e[1].replace(f, "") + " ";
                    if (s) return e;
                    for (var o = 0, u;
                    (u = t[o]) != null; o++) u && (i ^ (u.className && (" " + u.className + " ").replace(/[\t\n\r]/g, " ").indexOf(e) >= 0) ? n || r.push(u) : n && (t[o] = !1));
                    return !1
                },
                ID: function (e) {
                    return e[1].replace(f, "")
                },
                TAG: function (e, t) {
                    return e[1].replace(f, "").toLowerCase()
                },
                CHILD: function (e) {
                    if (e[1] === "nth") {
                        e[2] || h.error(e[0]);
                        e[2] = e[2].replace(/^\+|\s*/g, "");
                        var t = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2] === "even" && "2n" || e[2] === "odd" && "2n+1" || !/\D/.test(e[2]) && "0n+" + e[2] || e[2]);
                        e[2] = t[1] + (t[2] || 1) - 0;
                        e[3] = t[3] - 0
                    } else e[2] && h.error(e[0]);
                    e[0] = i++;
                    return e
                },
                ATTR: function (e, t, n, r, i, s) {
                    var o = e[1] = e[1].replace(f, "");
                    !s && d.attrMap[o] && (e[1] = d.attrMap[o]);
                    e[4] = (e[4] || e[5] || "").replace(f, "");
                    e[2] === "~=" && (e[4] = " " + e[4] + " ");
                    return e
                },
                PSEUDO: function (t, n, r, i, s) {
                    if (t[1] === "not") {
                        if (!((e.exec(t[3]) || "").length > 1 || /^\w/.test(t[3]))) {
                            var o = h.filter(t[3], n, r, !0 ^ s);
                            r || i.push.apply(i, o);
                            return !1
                        }
                        t[3] = h(t[3], null, null, n)
                    } else if (d.match.POS.test(t[0]) || d.match.CHILD.test(t[0])) return !0;
                    return t
                },
                POS: function (e) {
                    e.unshift(!0);
                    return e
                }
            },
            filters: {
                enabled: function (e) {
                    return e.disabled === !1 && e.type !== "hidden"
                },
                disabled: function (e) {
                    return e.disabled === !0
                },
                checked: function (e) {
                    return e.checked === !0
                },
                selected: function (e) {
                    e.parentNode && e.parentNode.selectedIndex;
                    return e.selected === !0
                },
                parent: function (e) {
                    return !!e.firstChild
                },
                empty: function (e) {
                    return !e.firstChild
                },
                has: function (e, t, n) {
                    return !!h(n[3], e).length
                },
                header: function (e) {
                    return /h\d/i.test(e.nodeName)
                },
                text: function (e) {
                    var t = e.getAttribute("type"),
                        n = e.type;
                    return e.nodeName.toLowerCase() === "input" && "text" === n && (t === n || t === null)
                },
                radio: function (e) {
                    return e.nodeName.toLowerCase() === "input" && "radio" === e.type
                },
                checkbox: function (e) {
                    return e.nodeName.toLowerCase() === "input" && "checkbox" === e.type
                },
                file: function (e) {
                    return e.nodeName.toLowerCase() === "input" && "file" === e.type
                },
                password: function (e) {
                    return e.nodeName.toLowerCase() === "input" && "password" === e.type
                },
                submit: function (e) {
                    var t = e.nodeName.toLowerCase();
                    return (t === "input" || t === "button") && "submit" === e.type
                },
                image: function (e) {
                    return e.nodeName.toLowerCase() === "input" && "image" === e.type
                },
                reset: function (e) {
                    var t = e.nodeName.toLowerCase();
                    return (t === "input" || t === "button") && "reset" === e.type
                },
                button: function (e) {
                    var t = e.nodeName.toLowerCase();
                    return t === "input" && "button" === e.type || t === "button"
                },
                input: function (e) {
                    return /input|select|textarea|button/i.test(e.nodeName)
                },
                focus: function (e) {
                    return e === e.ownerDocument.activeElement
                }
            },
            setFilters: {
                first: function (e, t) {
                    return t === 0
                },
                last: function (e, t, n, r) {
                    return t === r.length - 1
                },
                even: function (e, t) {
                    return t % 2 === 0
                },
                odd: function (e, t) {
                    return t % 2 === 1
                },
                lt: function (e, t, n) {
                    return t < n[3] - 0
                },
                gt: function (e, t, n) {
                    return t > n[3] - 0
                },
                nth: function (e, t, n) {
                    return n[3] - 0 === t
                },
                eq: function (e, t, n) {
                    return n[3] - 0 === t
                }
            },
            filter: {
                PSEUDO: function (e, t, n, r) {
                    var i = t[1],
                        s = d.filters[i];
                    if (s) return s(e, n, t, r);
                    if (i === "contains") return (e.textContent || e.innerText || p([e]) || "").indexOf(t[3]) >= 0;
                    if (i === "not") {
                        var o = t[3];
                        for (var u = 0, a = o.length; u < a; u++) if (o[u] === e) return !1;
                        return !0
                    }
                    h.error(i)
                },
                CHILD: function (e, t) {
                    var n, i, s, o, u, a, f, l = t[1],
                        c = e;
                    switch (l) {
                        case "only":
                        case "first":
                            while (c = c.previousSibling) if (c.nodeType === 1) return !1;
                            if (l === "first") return !0;
                            c = e;
                        case "last":
                            while (c = c.nextSibling) if (c.nodeType === 1) return !1;
                            return !0;
                        case "nth":
                            n = t[2];
                            i = t[3];
                            if (n === 1 && i === 0) return !0;
                            s = t[0];
                            o = e.parentNode;
                            if (o && (o[r] !== s || !e.nodeIndex)) {
                                a = 0;
                                for (c = o.firstChild; c; c = c.nextSibling) c.nodeType === 1 && (c.nodeIndex = ++a);
                                o[r] = s
                            }
                            f = e.nodeIndex - i;
                            return n === 0 ? f === 0 : f % n === 0 && f / n >= 0
                    }
                },
                ID: function (e, t) {
                    return e.nodeType === 1 && e.getAttribute("id") === t
                },
                TAG: function (e, t) {
                    return t === "*" && e.nodeType === 1 || !! e.nodeName && e.nodeName.toLowerCase() === t
                },
                CLASS: function (e, t) {
                    return (" " + (e.className || e.getAttribute("class")) + " ").indexOf(t) > -1
                },
                ATTR: function (e, t) {
                    var n = t[1],
                        r = h.attr ? h.attr(e, n) : d.attrHandle[n] ? d.attrHandle[n](e) : e[n] != null ? e[n] : e.getAttribute(n),
                        i = r + "",
                        s = t[2],
                        o = t[4];
                    return r == null ? s === "!=" : !s && h.attr ? r != null : s === "=" ? i === o : s === "*=" ? i.indexOf(o) >= 0 : s === "~=" ? (" " + i + " ").indexOf(o) >= 0 : o ? s === "!=" ? i !== o : s === "^=" ? i.indexOf(o) === 0 : s === "$=" ? i.substr(i.length - o.length) === o : s === "|=" ? i === o || i.substr(0, o.length + 1) === o + "-" : !1 : i && r !== !1
                },
                POS: function (e, t, n, r) {
                    var i = t[2],
                        s = d.setFilters[i];
                    if (s) return s(e, n, t, r)
                }
            }
        }, v = d.match.POS,
            m = function (e, t) {
                return "\\" + (t - 0 + 1)
            };
        for (var g in d.match) {
            d.match[g] = new RegExp(d.match[g].source + /(?![^\[]*\])(?![^\(]*\))/.source);
            d.leftMatch[g] = new RegExp(/(^(?:.|\r|\n)*?)/.source + d.match[g].source.replace(/\\(\d+)/g, m))
        }
        var y = function (e, t) {
            e = Array.prototype.slice.call(e, 0);
            if (t) {
                t.push.apply(t, e);
                return t
            }
            return e
        };
        try {
            Array.prototype.slice.call(n.documentElement.childNodes, 0)[0].nodeType
        } catch (b) {
            y = function (e, t) {
                var n = 0,
                    r = t || [];
                if (o.call(e) === "[object Array]") Array.prototype.push.apply(r, e);
                else if (typeof e.length == "number") for (var i = e.length; n < i; n++) r.push(e[n]);
                else for (; e[n]; n++) r.push(e[n]);
                return r
            }
        }
        var w, E;
        if (n.documentElement.compareDocumentPosition) w = function (e, t) {
            if (e === t) {
                u = !0;
                return 0
            }
            return !e.compareDocumentPosition || !t.compareDocumentPosition ? e.compareDocumentPosition ? -1 : 1 : e.compareDocumentPosition(t) & 4 ? -1 : 1
        };
        else {
            w = function (e, t) {
                if (e === t) {
                    u = !0;
                    return 0
                }
                if (e.sourceIndex && t.sourceIndex) return e.sourceIndex - t.sourceIndex;
                var n, r, i = [],
                    s = [],
                    o = e.parentNode,
                    a = t.parentNode,
                    f = o;
                if (o === a) return E(e, t);
                if (!o) return -1;
                if (!a) return 1;
                while (f) {
                    i.unshift(f);
                    f = f.parentNode
                }
                f = a;
                while (f) {
                    s.unshift(f);
                    f = f.parentNode
                }
                n = i.length;
                r = s.length;
                for (var l = 0; l < n && l < r; l++) if (i[l] !== s[l]) return E(i[l], s[l]);
                return l === n ? E(e, s[l], -1) : E(i[l], t, 1)
            };
            E = function (e, t, n) {
                if (e === t) return n;
                var r = e.nextSibling;
                while (r) {
                    if (r === t) return -1;
                    r = r.nextSibling
                }
                return 1
            }
        }(function () {
            var e = n.createElement("div"),
                r = "script" + (new Date).getTime(),
                i = n.documentElement;
            e.innerHTML = "<a name='" + r + "'/>";
            i.insertBefore(e, i.firstChild);
            if (n.getElementById(r)) {
                d.find.ID = function (e, n, r) {
                    if (typeof n.getElementById != "undefined" && !r) {
                        var i = n.getElementById(e[1]);
                        return i ? i.id === e[1] || typeof i.getAttributeNode != "undefined" && i.getAttributeNode("id").nodeValue === e[1] ? [i] : t : []
                    }
                };
                d.filter.ID = function (e, t) {
                    var n = typeof e.getAttributeNode != "undefined" && e.getAttributeNode("id");
                    return e.nodeType === 1 && n && n.nodeValue === t
                }
            }
            i.removeChild(e);
            i = e = null
        })();
        (function () {
            var e = n.createElement("div");
            e.appendChild(n.createComment(""));
            e.getElementsByTagName("*").length > 0 && (d.find.TAG = function (e, t) {
                var n = t.getElementsByTagName(e[1]);
                if (e[1] === "*") {
                    var r = [];
                    for (var i = 0; n[i]; i++) n[i].nodeType === 1 && r.push(n[i]);
                    n = r
                }
                return n
            });
            e.innerHTML = "<a href='#'></a>";
            e.firstChild && typeof e.firstChild.getAttribute != "undefined" && e.firstChild.getAttribute("href") !== "#" && (d.attrHandle.href = function (e) {
                return e.getAttribute("href", 2)
            });
            e = null
        })();
        n.querySelectorAll && function () {
            var e = h,
                t = n.createElement("div"),
                r = "__sizzle__";
            t.innerHTML = "<p class='TEST'></p>";
            if (t.querySelectorAll && t.querySelectorAll(".TEST").length === 0) return;
            h = function (t, i, s, o) {
                i = i || n;
                if (!o && !h.isXML(i)) {
                    var u = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(t);
                    if (u && (i.nodeType === 1 || i.nodeType === 9)) {
                        if (u[1]) return y(i.getElementsByTagName(t), s);
                        if (u[2] && d.find.CLASS && i.getElementsByClassName) return y(i.getElementsByClassName(u[2]), s)
                    }
                    if (i.nodeType === 9) {
                        if (t === "body" && i.body) return y([i.body], s);
                        if (u && u[3]) {
                            var a = i.getElementById(u[3]);
                            if (!a || !a.parentNode) return y([], s);
                            if (a.id === u[3]) return y([a], s)
                        }
                        try {
                            return y(i.querySelectorAll(t), s)
                        } catch (f) {}
                    } else if (i.nodeType === 1 && i.nodeName.toLowerCase() !== "object") {
                        var l = i,
                            c = i.getAttribute("id"),
                            p = c || r,
                            v = i.parentNode,
                            m = /^\s*[+~]/.test(t);
                        c ? p = p.replace(/'/g, "\\$&") : i.setAttribute("id", p);
                        m && v && (i = i.parentNode);
                        try {
                            if (!m || v) return y(i.querySelectorAll("[id='" + p + "'] " + t), s)
                        } catch (g) {} finally {
                            c || l.removeAttribute("id")
                        }
                    }
                }
                return e(t, i, s, o)
            };
            for (var i in e) h[i] = e[i];
            t = null
        }();
        (function () {
            var e = n.documentElement,
                t = e.matchesSelector || e.mozMatchesSelector || e.webkitMatchesSelector || e.msMatchesSelector;
            if (t) {
                var r = !t.call(n.createElement("div"), "div"),
                    i = !1;
                try {
                    t.call(n.documentElement, "[test!='']:sizzle")
                } catch (s) {
                    i = !0
                }
                h.matchesSelector = function (e, n) {
                    n = n.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
                    if (!h.isXML(e)) try {
                        if (i || !d.match.PSEUDO.test(n) && !/!=/.test(n)) {
                            var s = t.call(e, n);
                            if (s || !r || e.document && e.document.nodeType !== 11) return s
                        }
                    } catch (o) {}
                    return h(n, null, null, [e]).length > 0
                }
            }
        })();
        (function () {
            var e = n.createElement("div");
            e.innerHTML = "<div class='test e'></div><div class='test'></div>";
            if (!e.getElementsByClassName || e.getElementsByClassName("e").length === 0) return;
            e.lastChild.className = "e";
            if (e.getElementsByClassName("e").length === 1) return;
            d.order.splice(1, 0, "CLASS");
            d.find.CLASS = function (e, t, n) {
                if (typeof t.getElementsByClassName != "undefined" && !n) return t.getElementsByClassName(e[1])
            };
            e = null
        })();
        n.documentElement.contains ? h.contains = function (e, t) {
            return e !== t && (e.contains ? e.contains(t) : !0)
        } : n.documentElement.compareDocumentPosition ? h.contains = function (e, t) {
            return !!(e.compareDocumentPosition(t) & 16)
        } : h.contains = function () {
            return !1
        };
        h.isXML = function (e) {
            var t = (e ? e.ownerDocument || e : 0).documentElement;
            return t ? t.nodeName !== "HTML" : !1
        };
        var T = function (e, t, n) {
            var r, i = [],
                s = "",
                o = t.nodeType ? [t] : t;
            while (r = d.match.PSEUDO.exec(e)) {
                s += r[0];
                e = e.replace(d.match.PSEUDO, "")
            }
            e = d.relative[e] ? e + "*" : e;
            for (var u = 0, a = o.length; u < a; u++) h(e, o[u], i, n);
            return h.filter(s, i)
        };
        h.attr = s.attr;
        h.selectors.attrMap = {};
        s.find = h;
        s.expr = h.selectors;
        s.expr[":"] = s.expr.filters;
        s.unique = h.uniqueSort;
        s.text = h.getText;
        s.isXMLDoc = h.isXML;
        s.contains = h.contains
    })();
    var j = /Until$/,
        F = /^(?:parents|prevUntil|prevAll)/,
        I = /,/,
        q = /^.[^:#\[\.,]*$/,
        R = Array.prototype.slice,
        U = s.expr.match.POS,
        z = {
            children: !0,
            contents: !0,
            next: !0,
            prev: !0
        };
    s.fn.extend({
        find: function (e) {
            var t = this,
                n, r;
            if (typeof e != "string") return s(e).filter(function () {
                for (n = 0, r = t.length; n < r; n++) if (s.contains(t[n], this)) return !0
            });
            var i = this.pushStack("", "find", e),
                o, u, a;
            for (n = 0, r = this.length; n < r; n++) {
                o = i.length;
                s.find(e, this[n], i);
                if (n > 0) for (u = o; u < i.length; u++) for (a = 0; a < o; a++) if (i[a] === i[u]) {
                    i.splice(u--, 1);
                    break
                }
            }
            return i
        },
        has: function (e) {
            var t = s(e);
            return this.filter(function () {
                for (var e = 0, n = t.length; e < n; e++) if (s.contains(this, t[e])) return !0
            })
        },
        not: function (e) {
            return this.pushStack(X(this, e, !1), "not", e)
        },
        filter: function (e) {
            return this.pushStack(X(this, e, !0), "filter", e)
        },
        is: function (e) {
            return !!e && (typeof e == "string" ? U.test(e) ? s(e, this.context).index(this[0]) >= 0 : s.filter(e, this).length > 0 : this.filter(e).length > 0)
        },
        closest: function (e, t) {
            var n = [],
                r, i, o = this[0];
            if (s.isArray(e)) {
                var u = 1;
                while (o && o.ownerDocument && o !== t) {
                    for (r = 0; r < e.length; r++) s(o).is(e[r]) && n.push({
                        selector: e[r],
                        elem: o,
                        level: u
                    });
                    o = o.parentNode;
                    u++
                }
                return n
            }
            var a = U.test(e) || typeof e != "string" ? s(e, t || this.context) : 0;
            for (r = 0, i = this.length; r < i; r++) {
                o = this[r];
                while (o) {
                    if (a ? a.index(o) > -1 : s.find.matchesSelector(o, e)) {
                        n.push(o);
                        break
                    }
                    o = o.parentNode;
                    if (!o || !o.ownerDocument || o === t || o.nodeType === 11) break
                }
            }
            n = n.length > 1 ? s.unique(n) : n;
            return this.pushStack(n, "closest", e)
        },
        index: function (e) {
            return e ? typeof e == "string" ? s.inArray(this[0], s(e)) : s.inArray(e.jquery ? e[0] : e, this) : this[0] && this[0].parentNode ? this.prevAll().length : -1
        },
        add: function (e, t) {
            var n = typeof e == "string" ? s(e, t) : s.makeArray(e && e.nodeType ? [e] : e),
                r = s.merge(this.get(), n);
            return this.pushStack(W(n[0]) || W(r[0]) ? r : s.unique(r))
        },
        andSelf: function () {
            return this.add(this.prevObject)
        }
    });
    s.each({
        parent: function (e) {
            var t = e.parentNode;
            return t && t.nodeType !== 11 ? t : null
        },
        parents: function (e) {
            return s.dir(e, "parentNode")
        },
        parentsUntil: function (e, t, n) {
            return s.dir(e, "parentNode", n)
        },
        next: function (e) {
            return s.nth(e, 2, "nextSibling")
        },
        prev: function (e) {
            return s.nth(e, 2, "previousSibling")
        },
        nextAll: function (e) {
            return s.dir(e, "nextSibling")
        },
        prevAll: function (e) {
            return s.dir(e, "previousSibling")
        },
        nextUntil: function (e, t, n) {
            return s.dir(e, "nextSibling", n)
        },
        prevUntil: function (e, t, n) {
            return s.dir(e, "previousSibling", n)
        },
        siblings: function (e) {
            return s.sibling(e.parentNode.firstChild, e)
        },
        children: function (e) {
            return s.sibling(e.firstChild)
        },
        contents: function (e) {
            return s.nodeName(e, "iframe") ? e.contentDocument || e.contentWindow.document : s.makeArray(e.childNodes)
        }
    }, function (e, t) {
        s.fn[e] = function (n, r) {
            var i = s.map(this, t, n);
            j.test(e) || (r = n);
            r && typeof r == "string" && (i = s.filter(r, i));
            i = this.length > 1 && !z[e] ? s.unique(i) : i;
            (this.length > 1 || I.test(r)) && F.test(e) && (i = i.reverse());
            return this.pushStack(i, e, R.call(arguments).join(","))
        }
    });
    s.extend({
        filter: function (e, t, n) {
            n && (e = ":not(" + e + ")");
            return t.length === 1 ? s.find.matchesSelector(t[0], e) ? [t[0]] : [] : s.find.matches(e, t)
        },
        dir: function (e, n, r) {
            var i = [],
                o = e[n];
            while (o && o.nodeType !== 9 && (r === t || o.nodeType !== 1 || !s(o).is(r))) {
                o.nodeType === 1 && i.push(o);
                o = o[n]
            }
            return i
        },
        nth: function (e, t, n, r) {
            t = t || 1;
            var i = 0;
            for (; e; e = e[n]) if (e.nodeType === 1 && ++i === t) break;
            return e
        },
        sibling: function (e, t) {
            var n = [];
            for (; e; e = e.nextSibling) e.nodeType === 1 && e !== t && n.push(e);
            return n
        }
    });
    var $ = "abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
        J = / jQuery\d+="(?:\d+|null)"/g,
        K = /^\s+/,
        Q = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
        G = /<([\w:]+)/,
        Y = /<tbody/i,
        Z = /<|&#?\w+;/,
        et = /<(?:script|style)/i,
        tt = /<(?:script|object|embed|option|style)/i,
        nt = new RegExp("<(?:" + $ + ")", "i"),
        rt = /checked\s*(?:[^=]|=\s*.checked.)/i,
        it = /\/(java|ecma)script/i,
        st = /^\s*<!(?:\[CDATA\[|\-\-)/,
        ot = {
            option: [1, "<select multiple='multiple'>", "</select>"],
            legend: [1, "<fieldset>", "</fieldset>"],
            thead: [1, "<table>", "</table>"],
            tr: [2, "<table><tbody>", "</tbody></table>"],
            td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
            col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"],
            area: [1, "<map>", "</map>"],
            _default: [0, "", ""]
        }, ut = V(n);
    ot.optgroup = ot.option;
    ot.tbody = ot.tfoot = ot.colgroup = ot.caption = ot.thead;
    ot.th = ot.td;
    s.support.htmlSerialize || (ot._default = [1, "div<div>", "</div>"]);
    s.fn.extend({
        text: function (e) {
            return s.isFunction(e) ? this.each(function (t) {
                var n = s(this);
                n.text(e.call(this, t, n.text()))
            }) : typeof e != "object" && e !== t ? this.empty().append((this[0] && this[0].ownerDocument || n).createTextNode(e)) : s.text(this)
        },
        wrapAll: function (e) {
            if (s.isFunction(e)) return this.each(function (t) {
                s(this).wrapAll(e.call(this, t))
            });
            if (this[0]) {
                var t = s(e, this[0].ownerDocument).eq(0).clone(!0);
                this[0].parentNode && t.insertBefore(this[0]);
                t.map(function () {
                    var e = this;
                    while (e.firstChild && e.firstChild.nodeType === 1) e = e.firstChild;
                    return e
                }).append(this)
            }
            return this
        },
        wrapInner: function (e) {
            return s.isFunction(e) ? this.each(function (t) {
                s(this).wrapInner(e.call(this, t))
            }) : this.each(function () {
                var t = s(this),
                    n = t.contents();
                n.length ? n.wrapAll(e) : t.append(e)
            })
        },
        wrap: function (e) {
            var t = s.isFunction(e);
            return this.each(function (n) {
                s(this).wrapAll(t ? e.call(this, n) : e)
            })
        },
        unwrap: function () {
            return this.parent().each(function () {
                s.nodeName(this, "body") || s(this).replaceWith(this.childNodes)
            }).end()
        },
        append: function () {
            return this.domManip(arguments, !0, function (e) {
                this.nodeType === 1 && this.appendChild(e)
            })
        },
        prepend: function () {
            return this.domManip(arguments, !0, function (e) {
                this.nodeType === 1 && this.insertBefore(e, this.firstChild)
            })
        },
        before: function () {
            if (this[0] && this[0].parentNode) return this.domManip(arguments, !1, function (e) {
                this.parentNode.insertBefore(e, this)
            });
            if (arguments.length) {
                var e = s.clean(arguments);
                e.push.apply(e, this.toArray());
                return this.pushStack(e, "before", arguments)
            }
        },
        after: function () {
            if (this[0] && this[0].parentNode) return this.domManip(arguments, !1, function (e) {
                this.parentNode.insertBefore(e, this.nextSibling)
            });
            if (arguments.length) {
                var e = this.pushStack(this, "after", arguments);
                e.push.apply(e, s.clean(arguments));
                return e
            }
        },
        remove: function (e, t) {
            for (var n = 0, r;
            (r = this[n]) != null; n++) if (!e || s.filter(e, [r]).length) {
                if (!t && r.nodeType === 1) {
                    s.cleanData(r.getElementsByTagName("*"));
                    s.cleanData([r])
                }
                r.parentNode && r.parentNode.removeChild(r)
            }
            return this
        },
        empty: function () {
            for (var e = 0, t;
            (t = this[e]) != null; e++) {
                t.nodeType === 1 && s.cleanData(t.getElementsByTagName("*"));
                while (t.firstChild) t.removeChild(t.firstChild)
            }
            return this
        },
        clone: function (e, t) {
            e = e == null ? !1 : e;
            t = t == null ? e : t;
            return this.map(function () {
                return s.clone(this, e, t)
            })
        },
        html: function (e) {
            if (e === t) return this[0] && this[0].nodeType === 1 ? this[0].innerHTML.replace(J, "") : null;
            if (typeof e == "string" && !et.test(e) && (s.support.leadingWhitespace || !K.test(e)) && !ot[(G.exec(e) || ["", ""])[1].toLowerCase()]) {
                e = e.replace(Q, "<$1></$2>");
                try {
                    for (var n = 0, r = this.length; n < r; n++) if (this[n].nodeType === 1) {
                        s.cleanData(this[n].getElementsByTagName("*"));
                        this[n].innerHTML = e
                    }
                } catch (i) {
                    this.empty().append(e)
                }
            } else s.isFunction(e) ? this.each(function (t) {
                var n = s(this);
                n.html(e.call(this, t, n.html()))
            }) : this.empty().append(e);
            return this
        },
        replaceWith: function (e) {
            if (this[0] && this[0].parentNode) {
                if (s.isFunction(e)) return this.each(function (t) {
                    var n = s(this),
                        r = n.html();
                    n.replaceWith(e.call(this, t, r))
                });
                typeof e != "string" && (e = s(e).detach());
                return this.each(function () {
                    var t = this.nextSibling,
                        n = this.parentNode;
                    s(this).remove();
                    t ? s(t).before(e) : s(n).append(e)
                })
            }
            return this.length ? this.pushStack(s(s.isFunction(e) ? e() : e), "replaceWith", e) : this
        },
        detach: function (e) {
            return this.remove(e, !0)
        },
        domManip: function (e, n, r) {
            var i, o, u, a, f = e[0],
                l = [];
            if (!s.support.checkClone && arguments.length === 3 && typeof f == "string" && rt.test(f)) return this.each(function () {
                s(this).domManip(e, n, r, !0)
            });
            if (s.isFunction(f)) return this.each(function (i) {
                var o = s(this);
                e[0] = f.call(this, i, n ? o.html() : t);
                o.domManip(e, n, r)
            });
            if (this[0]) {
                a = f && f.parentNode;
                s.support.parentNode && a && a.nodeType === 11 && a.childNodes.length === this.length ? i = {
                    fragment: a
                } : i = s.buildFragment(e, this, l);
                u = i.fragment;
                u.childNodes.length === 1 ? o = u = u.firstChild : o = u.firstChild;
                if (o) {
                    n = n && s.nodeName(o, "tr");
                    for (var c = 0, h = this.length, p = h - 1; c < h; c++) r.call(n ? at(this[c], o) : this[c], i.cacheable || h > 1 && c < p ? s.clone(u, !0, !0) : u)
                }
                l.length && s.each(l, vt)
            }
            return this
        }
    });
    s.buildFragment = function (e, t, r) {
        var i, o, u, a, f = e[0];
        t && t[0] && (a = t[0].ownerDocument || t[0]);
        a.createDocumentFragment || (a = n);
        if (e.length === 1 && typeof f == "string" && f.length < 512 && a === n && f.charAt(0) === "<" && !tt.test(f) && (s.support.checkClone || !rt.test(f)) && (s.support.html5Clone || !nt.test(f))) {
            o = !0;
            u = s.fragments[f];
            u && u !== 1 && (i = u)
        }
        if (!i) {
            i = a.createDocumentFragment();
            s.clean(e, a, i, r)
        }
        o && (s.fragments[f] = u ? i : 1);
        return {
            fragment: i,
            cacheable: o
        }
    };
    s.fragments = {};
    s.each({
        appendTo: "append",
        prependTo: "prepend",
        insertBefore: "before",
        insertAfter: "after",
        replaceAll: "replaceWith"
    }, function (e, t) {
        s.fn[e] = function (n) {
            var r = [],
                i = s(n),
                o = this.length === 1 && this[0].parentNode;
            if (o && o.nodeType === 11 && o.childNodes.length === 1 && i.length === 1) {
                i[t](this[0]);
                return this
            }
            for (var u = 0, a = i.length; u < a; u++) {
                var f = (u > 0 ? this.clone(!0) : this).get();
                s(i[u])[t](f);
                r = r.concat(f)
            }
            return this.pushStack(r, e, i.selector)
        }
    });
    s.extend({
        clone: function (e, t, n) {
            var r, i, o, u = s.support.html5Clone || !nt.test("<" + e.nodeName) ? e.cloneNode(!0) : dt(e);
            if ((!s.support.noCloneEvent || !s.support.noCloneChecked) && (e.nodeType === 1 || e.nodeType === 11) && !s.isXMLDoc(e)) {
                lt(e, u);
                r = ct(e);
                i = ct(u);
                for (o = 0; r[o]; ++o) i[o] && lt(r[o], i[o])
            }
            if (t) {
                ft(e, u);
                if (n) {
                    r = ct(e);
                    i = ct(u);
                    for (o = 0; r[o]; ++o) ft(r[o], i[o])
                }
            }
            r = i = null;
            return u
        },
        clean: function (e, t, r, i) {
            var o;
            t = t || n;
            typeof t.createElement == "undefined" && (t = t.ownerDocument || t[0] && t[0].ownerDocument || n);
            var u = [],
                a;
            for (var f = 0, l;
            (l = e[f]) != null; f++) {
                typeof l == "number" && (l += "");
                if (!l) continue;
                if (typeof l == "string") if (!Z.test(l)) l = t.createTextNode(l);
                else {
                    l = l.replace(Q, "<$1></$2>");
                    var c = (G.exec(l) || ["", ""])[1].toLowerCase(),
                        h = ot[c] || ot._default,
                        p = h[0],
                        d = t.createElement("div");
                    t === n ? ut.appendChild(d) : V(t).appendChild(d);
                    d.innerHTML = h[1] + l + h[2];
                    while (p--) d = d.lastChild;
                    if (!s.support.tbody) {
                        var v = Y.test(l),
                            m = c === "table" && !v ? d.firstChild && d.firstChild.childNodes : h[1] === "<table>" && !v ? d.childNodes : [];
                        for (a = m.length - 1; a >= 0; --a) s.nodeName(m[a], "tbody") && !m[a].childNodes.length && m[a].parentNode.removeChild(m[a])
                    }!s.support.leadingWhitespace && K.test(l) && d.insertBefore(t.createTextNode(K.exec(l)[0]), d.firstChild);
                    l = d.childNodes
                }
                var g;
                if (!s.support.appendChecked) if (l[0] && typeof (g = l.length) == "number") for (a = 0; a < g; a++) pt(l[a]);
                else pt(l);
                l.nodeType ? u.push(l) : u = s.merge(u, l)
            }
            if (r) {
                o = function (e) {
                    return !e.type || it.test(e.type)
                };
                for (f = 0; u[f]; f++) if (i && s.nodeName(u[f], "script") && (!u[f].type || u[f].type.toLowerCase() === "text/javascript")) i.push(u[f].parentNode ? u[f].parentNode.removeChild(u[f]) : u[f]);
                else {
                    if (u[f].nodeType === 1) {
                        var y = s.grep(u[f].getElementsByTagName("script"), o);
                        u.splice.apply(u, [f + 1, 0].concat(y))
                    }
                    r.appendChild(u[f])
                }
            }
            return u
        },
        cleanData: function (e) {
            var t, n, r = s.cache,
                i = s.event.special,
                o = s.support.deleteExpando;
            for (var u = 0, a;
            (a = e[u]) != null; u++) {
                if (a.nodeName && s.noData[a.nodeName.toLowerCase()]) continue;
                n = a[s.expando];
                if (n) {
                    t = r[n];
                    if (t && t.events) {
                        for (var f in t.events) i[f] ? s.event.remove(a, f) : s.removeEvent(a, f, t.handle);
                        t.handle && (t.handle.elem = null)
                    }
                    o ? delete a[s.expando] : a.removeAttribute && a.removeAttribute(s.expando);
                    delete r[n]
                }
            }
        }
    });
    var mt = /alpha\([^)]*\)/i,
        gt = /opacity=([^)]*)/,
        yt = /([A-Z]|^ms)/g,
        bt = /^-?\d+(?:px)?$/i,
        wt = /^-?\d/,
        Et = /^([\-+])=([\-+.\de]+)/,
        St = {
            position: "absolute",
            visibility: "hidden",
            display: "block"
        }, xt = ["Left", "Right"],
        Tt = ["Top", "Bottom"],
        Nt, Ct, kt;
    s.fn.css = function (e, n) {
        return arguments.length === 2 && n === t ? this : s.access(this, e, n, !0, function (e, n, r) {
            return r !== t ? s.style(e, n, r) : s.css(e, n)
        })
    };
    s.extend({
        cssHooks: {
            opacity: {
                get: function (e, t) {
                    if (t) {
                        var n = Nt(e, "opacity", "opacity");
                        return n === "" ? "1" : n
                    }
                    return e.style.opacity
                }
            }
        },
        cssNumber: {
            fillOpacity: !0,
            fontWeight: !0,
            lineHeight: !0,
            opacity: !0,
            orphans: !0,
            widows: !0,
            zIndex: !0,
            zoom: !0
        },
        cssProps: {
            "float": s.support.cssFloat ? "cssFloat" : "styleFloat"
        },
        style: function (e, n, r, i) {
            if (!e || e.nodeType === 3 || e.nodeType === 8 || !e.style) return;
            var o, u, a = s.camelCase(n),
                f = e.style,
                l = s.cssHooks[a];
            n = s.cssProps[a] || a;
            if (r === t) return l && "get" in l && (o = l.get(e, !1, i)) !== t ? o : f[n];
            u = typeof r;
            if (u === "string" && (o = Et.exec(r))) {
                r = +(o[1] + 1) * +o[2] + parseFloat(s.css(e, n));
                u = "number"
            }
            if (r == null || u === "number" && isNaN(r)) return;
            u === "number" && !s.cssNumber[a] && (r += "px");
            if (!l || !("set" in l) || (r = l.set(e, r)) !== t) try {
                f[n] = r
            } catch (c) {}
        },
        css: function (e, n, r) {
            var i, o;
            n = s.camelCase(n);
            o = s.cssHooks[n];
            n = s.cssProps[n] || n;
            n === "cssFloat" && (n = "float");
            if (o && "get" in o && (i = o.get(e, !0, r)) !== t) return i;
            if (Nt) return Nt(e, n)
        },
        swap: function (e, t, n) {
            var r = {};
            for (var i in t) {
                r[i] = e.style[i];
                e.style[i] = t[i]
            }
            n.call(e);
            for (i in t) e.style[i] = r[i]
        }
    });
    s.curCSS = s.css;
    s.each(["height", "width"], function (e, t) {
        s.cssHooks[t] = {
            get: function (e, n, r) {
                var i;
                if (n) {
                    if (e.offsetWidth !== 0) return Lt(e, t, r);
                    s.swap(e, St, function () {
                        i = Lt(e, t, r)
                    });
                    return i
                }
            },
            set: function (e, t) {
                if (!bt.test(t)) return t;
                t = parseFloat(t);
                if (t >= 0) return t + "px"
            }
        }
    });
    s.support.opacity || (s.cssHooks.opacity = {
        get: function (e, t) {
            return gt.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? parseFloat(RegExp.$1) / 100 + "" : t ? "1" : ""
        },
        set: function (e, t) {
            var n = e.style,
                r = e.currentStyle,
                i = s.isNumeric(t) ? "alpha(opacity=" + t * 100 + ")" : "",
                o = r && r.filter || n.filter || "";
            n.zoom = 1;
            if (t >= 1 && s.trim(o.replace(mt, "")) === "") {
                n.removeAttribute("filter");
                if (r && !r.filter) return
            }
            n.filter = mt.test(o) ? o.replace(mt, i) : o + " " + i
        }
    });
    s(function () {
        s.support.reliableMarginRight || (s.cssHooks.marginRight = {
            get: function (e, t) {
                var n;
                s.swap(e, {
                    display: "inline-block"
                }, function () {
                    t ? n = Nt(e, "margin-right", "marginRight") : n = e.style.marginRight
                });
                return n
            }
        })
    });
    n.defaultView && n.defaultView.getComputedStyle && (Ct = function (e, t) {
        var n, r, i;
        t = t.replace(yt, "-$1").toLowerCase();
        if ((r = e.ownerDocument.defaultView) && (i = r.getComputedStyle(e, null))) {
            n = i.getPropertyValue(t);
            n === "" && !s.contains(e.ownerDocument.documentElement, e) && (n = s.style(e, t))
        }
        return n
    });
    n.documentElement.currentStyle && (kt = function (e, t) {
        var n, r, i, s = e.currentStyle && e.currentStyle[t],
            o = e.style;
        s === null && o && (i = o[t]) && (s = i);
        if (!bt.test(s) && wt.test(s)) {
            n = o.left;
            r = e.runtimeStyle && e.runtimeStyle.left;
            r && (e.runtimeStyle.left = e.currentStyle.left);
            o.left = t === "fontSize" ? "1em" : s || 0;
            s = o.pixelLeft + "px";
            o.left = n;
            r && (e.runtimeStyle.left = r)
        }
        return s === "" ? "auto" : s
    });
    Nt = Ct || kt;
    if (s.expr && s.expr.filters) {
        s.expr.filters.hidden = function (e) {
            var t = e.offsetWidth,
                n = e.offsetHeight;
            return t === 0 && n === 0 || !s.support.reliableHiddenOffsets && (e.style && e.style.display || s.css(e, "display")) === "none"
        };
        s.expr.filters.visible = function (e) {
            return !s.expr.filters.hidden(e)
        }
    }
    var At = /%20/g,
        Ot = /\[\]$/,
        Mt = /\r?\n/g,
        _t = /#.*$/,
        Dt = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg,
        Pt = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
        Ht = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
        Bt = /^(?:GET|HEAD)$/,
        jt = /^\/\//,
        Ft = /\?/,
        It = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
        qt = /^(?:select|textarea)/i,
        Rt = /\s+/,
        Ut = /([?&])_=[^&]*/,
        zt = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
        Wt = s.fn.load,
        Xt = {}, Vt = {}, $t, Jt, Kt = ["*/"] + ["*"];
    try {
        $t = i.href
    } catch (Qt) {
        $t = n.createElement("a");
        $t.href = "";
        $t = $t.href
    }
    Jt = zt.exec($t.toLowerCase()) || [];
    s.fn.extend({
        load: function (e, n, r) {
            if (typeof e != "string" && Wt) return Wt.apply(this, arguments);
            if (!this.length) return this;
            var i = e.indexOf(" ");
            if (i >= 0) {
                var o = e.slice(i, e.length);
                e = e.slice(0, i)
            }
            var u = "GET";
            if (n) if (s.isFunction(n)) {
                r = n;
                n = t
            } else if (typeof n == "object") {
                n = s.param(n, s.ajaxSettings.traditional);
                u = "POST"
            }
            var a = this;
            s.ajax({
                url: e,
                type: u,
                dataType: "html",
                data: n,
                complete: function (e, t, n) {
                    n = e.responseText;
                    if (e.isResolved()) {
                        e.done(function (e) {
                            n = e
                        });
                        a.html(o ? s("<div>").append(n.replace(It, "")).find(o) : n)
                    }
                    r && a.each(r, [n, t, e])
                }
            });
            return this
        },
        serialize: function () {
            return s.param(this.serializeArray())
        },
        serializeArray: function () {
            return this.map(function () {
                return this.elements ? s.makeArray(this.elements) : this
            }).filter(function () {
                return this.name && !this.disabled && (this.checked || qt.test(this.nodeName) || Pt.test(this.type))
            }).map(function (e, t) {
                var n = s(this).val();
                return n == null ? null : s.isArray(n) ? s.map(n, function (e, n) {
                    return {
                        name: t.name,
                        value: e.replace(Mt, "\r\n")
                    }
                }) : {
                    name: t.name,
                    value: n.replace(Mt, "\r\n")
                }
            }).get()
        }
    });
    s.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function (e, t) {
        s.fn[t] = function (e) {
            return this.on(t, e)
        }
    });
    s.each(["get", "post"], function (e, n) {
        s[n] = function (e, r, i, o) {
            if (s.isFunction(r)) {
                o = o || i;
                i = r;
                r = t
            }
            return s.ajax({
                type: n,
                url: e,
                data: r,
                success: i,
                dataType: o
            })
        }
    });
    s.extend({
        getScript: function (e, n) {
            return s.get(e, t, n, "script")
        },
        getJSON: function (e, t, n) {
            return s.get(e, t, n, "json")
        },
        ajaxSetup: function (e, t) {
            if (t) Zt(e, s.ajaxSettings);
            else {
                t = e;
                e = s.ajaxSettings
            }
            Zt(e, t);
            return e
        },
        ajaxSettings: {
            url: $t,
            isLocal: Ht.test(Jt[1]),
            global: !0,
            type: "GET",
            contentType: "application/x-www-form-urlencoded",
            processData: !0,
            async: !0,
            accepts: {
                xml: "application/xml, text/xml",
                html: "text/html",
                text: "text/plain",
                json: "application/json, text/javascript",
                "*": Kt
            },
            contents: {
                xml: /xml/,
                html: /html/,
                json: /json/
            },
            responseFields: {
                xml: "responseXML",
                text: "responseText"
            },
            converters: {
                "* text": e.String,
                "text html": !0,
                "text json": s.parseJSON,
                "text xml": s.parseXML
            },
            flatOptions: {
                context: !0,
                url: !0
            }
        },
        ajaxPrefilter: Gt(Xt),
        ajaxTransport: Gt(Vt),
        ajax: function (e, n) {
            function S(e, n, c, h) {
                if (y === 2) return;
                y = 2;
                m && clearTimeout(m);
                v = t;
                p = h || "";
                E.readyState = e > 0 ? 4 : 0;
                var d, g, w, S = n,
                    x = c ? tn(r, E, c) : t,
                    T, N;
                if (e >= 200 && e < 300 || e === 304) {
                    if (r.ifModified) {
                        if (T = E.getResponseHeader("Last-Modified")) s.lastModified[l] = T;
                        if (N = E.getResponseHeader("Etag")) s.etag[l] = N
                    }
                    if (e === 304) {
                        S = "notmodified";
                        d = !0
                    } else try {
                        g = nn(r, x);
                        S = "success";
                        d = !0
                    } catch (C) {
                        S = "parsererror";
                        w = C
                    }
                } else {
                    w = S;
                    if (!S || e) {
                        S = "error";
                        e < 0 && (e = 0)
                    }
                }
                E.status = e;
                E.statusText = "" + (n || S);
                d ? u.resolveWith(i, [g, S, E]) : u.rejectWith(i, [E, S, w]);
                E.statusCode(f);
                f = t;
                b && o.trigger("ajax" + (d ? "Success" : "Error"), [E, r, d ? g : w]);
                a.fireWith(i, [E, S]);
                if (b) {
                    o.trigger("ajaxComplete", [E, r]);
                    --s.active || s.event.trigger("ajaxStop")
                }
            }
            if (typeof e == "object") {
                n = e;
                e = t
            }
            n = n || {};
            var r = s.ajaxSetup({}, n),
                i = r.context || r,
                o = i !== r && (i.nodeType || i instanceof s) ? s(i) : s.event,
                u = s.Deferred(),
                a = s.Callbacks("once memory"),
                f = r.statusCode || {}, l, c = {}, h = {}, p, d, v, m, g, y = 0,
                b, w, E = {
                    readyState: 0,
                    setRequestHeader: function (e, t) {
                        if (!y) {
                            var n = e.toLowerCase();
                            e = h[n] = h[n] || e;
                            c[e] = t
                        }
                        return this
                    },
                    getAllResponseHeaders: function () {
                        return y === 2 ? p : null
                    },
                    getResponseHeader: function (e) {
                        var n;
                        if (y === 2) {
                            if (!d) {
                                d = {};
                                while (n = Dt.exec(p)) d[n[1].toLowerCase()] = n[2]
                            }
                            n = d[e.toLowerCase()]
                        }
                        return n === t ? null : n
                    },
                    overrideMimeType: function (e) {
                        y || (r.mimeType = e);
                        return this
                    },
                    abort: function (e) {
                        e = e || "abort";
                        v && v.abort(e);
                        S(0, e);
                        return this
                    }
                };
            u.promise(E);
            E.success = E.done;
            E.error = E.fail;
            E.complete = a.add;
            E.statusCode = function (e) {
                if (e) {
                    var t;
                    if (y < 2) for (t in e) f[t] = [f[t], e[t]];
                    else {
                        t = e[E.status];
                        E.then(t, t)
                    }
                }
                return this
            };
            r.url = ((e || r.url) + "").replace(_t, "").replace(jt, Jt[1] + "//");
            r.dataTypes = s.trim(r.dataType || "*").toLowerCase().split(Rt);
            if (r.crossDomain == null) {
                g = zt.exec(r.url.toLowerCase());
                r.crossDomain = !(!g || g[1] == Jt[1] && g[2] == Jt[2] && (g[3] || (g[1] === "http:" ? 80 : 443)) == (Jt[3] || (Jt[1] === "http:" ? 80 : 443)))
            }
            r.data && r.processData && typeof r.data != "string" && (r.data = s.param(r.data, r.traditional));
            Yt(Xt, r, n, E);
            if (y === 2) return !1;
            b = r.global;
            r.type = r.type.toUpperCase();
            r.hasContent = !Bt.test(r.type);
            b && s.active++ === 0 && s.event.trigger("ajaxStart");
            if (!r.hasContent) {
                if (r.data) {
                    r.url += (Ft.test(r.url) ? "&" : "?") + r.data;
                    delete r.data
                }
                l = r.url;
                if (r.cache === !1) {
                    var x = s.now(),
                        T = r.url.replace(Ut, "$1_=" + x);
                    r.url = T + (T === r.url ? (Ft.test(r.url) ? "&" : "?") + "_=" + x : "")
                }
            }(r.data && r.hasContent && r.contentType !== !1 || n.contentType) && E.setRequestHeader("Content-Type", r.contentType);
            if (r.ifModified) {
                l = l || r.url;
                s.lastModified[l] && E.setRequestHeader("If-Modified-Since", s.lastModified[l]);
                s.etag[l] && E.setRequestHeader("If-None-Match", s.etag[l])
            }
            E.setRequestHeader("Accept", r.dataTypes[0] && r.accepts[r.dataTypes[0]] ? r.accepts[r.dataTypes[0]] + (r.dataTypes[0] !== "*" ? ", " + Kt + "; q=0.01" : "") : r.accepts["*"]);
            for (w in r.headers) E.setRequestHeader(w, r.headers[w]);
            if (!r.beforeSend || r.beforeSend.call(i, E, r) !== !1 && y !== 2) {
                for (w in {
                    success: 1,
                    error: 1,
                    complete: 1
                }) E[w](r[w]);
                v = Yt(Vt, r, n, E);
                if (!v) S(-1, "No Transport");
                else {
                    E.readyState = 1;
                    b && o.trigger("ajaxSend", [E, r]);
                    r.async && r.timeout > 0 && (m = setTimeout(function () {
                        E.abort("timeout")
                    }, r.timeout));
                    try {
                        y = 1;
                        v.send(c, S)
                    } catch (N) {
                        if (!(y < 2)) throw N;
                        S(-1, N)
                    }
                }
                return E
            }
            E.abort();
            return !1
        },
        param: function (e, n) {
            var r = [],
                i = function (e, t) {
                    t = s.isFunction(t) ? t() : t;
                    r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t)
                };
            n === t && (n = s.ajaxSettings.traditional);
            if (s.isArray(e) || e.jquery && !s.isPlainObject(e)) s.each(e, function () {
                i(this.name, this.value)
            });
            else for (var o in e) en(o, e[o], n, i);
            return r.join("&").replace(At, "+")
        }
    });
    s.extend({
        active: 0,
        lastModified: {},
        etag: {}
    });
    var rn = s.now(),
        sn = /(\=)\?(&|$)|\?\?/i;
    s.ajaxSetup({
        jsonp: "callback",
        jsonpCallback: function () {
            return s.expando + "_" + rn++
        }
    });
    s.ajaxPrefilter("json jsonp", function (t, n, r) {
        var i = t.contentType === "application/x-www-form-urlencoded" && typeof t.data == "string";
        if (t.dataTypes[0] === "jsonp" || t.jsonp !== !1 && (sn.test(t.url) || i && sn.test(t.data))) {
            var o, u = t.jsonpCallback = s.isFunction(t.jsonpCallback) ? t.jsonpCallback() : t.jsonpCallback,
                a = e[u],
                f = t.url,
                l = t.data,
                c = "$1" + u + "$2";
            if (t.jsonp !== !1) {
                f = f.replace(sn, c);
                if (t.url === f) {
                    i && (l = l.replace(sn, c));
                    t.data === l && (f += (/\?/.test(f) ? "&" : "?") + t.jsonp + "=" + u)
                }
            }
            t.url = f;
            t.data = l;
            e[u] = function (e) {
                o = [e]
            };
            r.always(function () {
                e[u] = a;
                o && s.isFunction(a) && e[u](o[0])
            });
            t.converters["script json"] = function () {
                o || s.error(u + " was not called");
                return o[0]
            };
            t.dataTypes[0] = "json";
            return "script"
        }
    });
    s.ajaxSetup({
        accepts: {
            script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
        },
        contents: {
            script: /javascript|ecmascript/
        },
        converters: {
            "text script": function (e) {
                s.globalEval(e);
                return e
            }
        }
    });
    s.ajaxPrefilter("script", function (e) {
        e.cache === t && (e.cache = !1);
        if (e.crossDomain) {
            e.type = "GET";
            e.global = !1
        }
    });
    s.ajaxTransport("script", function (
    e) {
        if (e.crossDomain) {
            var r, i = n.head || n.getElementsByTagName("head")[0] || n.documentElement;
            return {
                send: function (s, o) {
                    r = n.createElement("script");
                    r.async = "async";
                    e.scriptCharset && (r.charset = e.scriptCharset);
                    r.src = e.url;
                    r.onload = r.onreadystatechange = function (e, n) {
                        if (n || !r.readyState || /loaded|complete/.test(r.readyState)) {
                            r.onload = r.onreadystatechange = null;
                            i && r.parentNode && i.removeChild(r);
                            r = t;
                            n || o(200, "success")
                        }
                    };
                    i.insertBefore(r, i.firstChild)
                },
                abort: function () {
                    r && r.onload(0, 1)
                }
            }
        }
    });
    var on = e.ActiveXObject ? function () {
            for (var e in an) an[e](0, 1)
        } : !1,
        un = 0,
        an;
    s.ajaxSettings.xhr = e.ActiveXObject ? function () {
        return !this.isLocal && fn() || ln()
    } : fn;
    (function (e) {
        s.extend(s.support, {
            ajax: !! e,
            cors: !! e && "withCredentials" in e
        })
    })(s.ajaxSettings.xhr());
    s.support.ajax && s.ajaxTransport(function (n) {
        if (!n.crossDomain || s.support.cors) {
            var r;
            return {
                send: function (i, o) {
                    var u = n.xhr(),
                        a, f;
                    n.username ? u.open(n.type, n.url, n.async, n.username, n.password) : u.open(n.type, n.url, n.async);
                    if (n.xhrFields) for (f in n.xhrFields) u[f] = n.xhrFields[f];
                    n.mimeType && u.overrideMimeType && u.overrideMimeType(n.mimeType);
                    !n.crossDomain && !i["X-Requested-With"] && (i["X-Requested-With"] = "XMLHttpRequest");
                    try {
                        for (f in i) u.setRequestHeader(f, i[f])
                    } catch (l) {}
                    u.send(n.hasContent && n.data || null);
                    r = function (e, i) {
                        var f, l, c, h, p;
                        try {
                            if (r && (i || u.readyState === 4)) {
                                r = t;
                                if (a) {
                                    u.onreadystatechange = s.noop;
                                    on && delete an[a]
                                }
                                if (i) u.readyState !== 4 && u.abort();
                                else {
                                    f = u.status;
                                    c = u.getAllResponseHeaders();
                                    h = {};
                                    p = u.responseXML;
                                    p && p.documentElement && (h.xml = p);
                                    h.text = u.responseText;
                                    try {
                                        l = u.statusText
                                    } catch (d) {
                                        l = ""
                                    }!f && n.isLocal && !n.crossDomain ? f = h.text ? 200 : 404 : f === 1223 && (f = 204)
                                }
                            }
                        } catch (v) {
                            i || o(-1, v)
                        }
                        h && o(f, l, h, c)
                    };
                    if (!n.async || u.readyState === 4) r();
                    else {
                        a = ++un;
                        if (on) {
                            if (!an) {
                                an = {};
                                s(e).unload(on)
                            }
                            an[a] = r
                        }
                        u.onreadystatechange = r
                    }
                },
                abort: function () {
                    r && r(0, 1)
                }
            }
        }
    });
    var cn = {}, hn, pn, dn = /^(?:toggle|show|hide)$/,
        vn = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
        mn, gn = [
            ["height", "marginTop", "marginBottom", "paddingTop", "paddingBottom"],
            ["width", "marginLeft", "marginRight", "paddingLeft", "paddingRight"],
            ["opacity"]
        ],
        yn;
    s.fn.extend({
        show: function (e, t, n) {
            var r, i;
            if (e || e === 0) return this.animate(En("show", 3), e, t, n);
            for (var o = 0, u = this.length; o < u; o++) {
                r = this[o];
                if (r.style) {
                    i = r.style.display;
                    !s._data(r, "olddisplay") && i === "none" && (i = r.style.display = "");
                    i === "" && s.css(r, "display") === "none" && s._data(r, "olddisplay", Sn(r.nodeName))
                }
            }
            for (o = 0; o < u; o++) {
                r = this[o];
                if (r.style) {
                    i = r.style.display;
                    if (i === "" || i === "none") r.style.display = s._data(r, "olddisplay") || ""
                }
            }
            return this
        },
        hide: function (e, t, n) {
            if (e || e === 0) return this.animate(En("hide", 3), e, t, n);
            var r, i, o = 0,
                u = this.length;
            for (; o < u; o++) {
                r = this[o];
                if (r.style) {
                    i = s.css(r, "display");
                    i !== "none" && !s._data(r, "olddisplay") && s._data(r, "olddisplay", i)
                }
            }
            for (o = 0; o < u; o++) this[o].style && (this[o].style.display = "none");
            return this
        },
        _toggle: s.fn.toggle,
        toggle: function (e, t, n) {
            var r = typeof e == "boolean";
            s.isFunction(e) && s.isFunction(t) ? this._toggle.apply(this, arguments) : e == null || r ? this.each(function () {
                var t = r ? e : s(this).is(":hidden");
                s(this)[t ? "show" : "hide"]()
            }) : this.animate(En("toggle", 3), e, t, n);
            return this
        },
        fadeTo: function (e, t, n, r) {
            return this.filter(":hidden").css("opacity", 0).show().end().animate({
                opacity: t
            }, e, n, r)
        },
        animate: function (e, t, n, r) {
            function o() {
                i.queue === !1 && s._mark(this);
                var t = s.extend({}, i),
                    n = this.nodeType === 1,
                    r = n && s(this).is(":hidden"),
                    o, u, a, f, l, c, h, p, d;
                t.animatedProperties = {};
                for (a in e) {
                    o = s.camelCase(a);
                    if (a !== o) {
                        e[o] = e[a];
                        delete e[a]
                    }
                    u = e[o];
                    if (s.isArray(u)) {
                        t.animatedProperties[o] = u[1];
                        u = e[o] = u[0]
                    } else t.animatedProperties[o] = t.specialEasing && t.specialEasing[o] || t.easing || "swing";
                    if (u === "hide" && r || u === "show" && !r) return t.complete.call(this);
                    if (n && (o === "height" || o === "width")) {
                        t.overflow = [this.style.overflow, this.style.overflowX, this.style.overflowY];
                        s.css(this, "display") === "inline" && s.css(this, "float") === "none" && (!s.support.inlineBlockNeedsLayout || Sn(this.nodeName) === "inline" ? this.style.display = "inline-block" : this.style.zoom = 1)
                    }
                }
                t.overflow != null && (this.style.overflow = "hidden");
                for (a in e) {
                    f = new s.fx(this, t, a);
                    u = e[a];
                    if (dn.test(u)) {
                        d = s._data(this, "toggle" + a) || (u === "toggle" ? r ? "show" : "hide" : 0);
                        if (d) {
                            s._data(this, "toggle" + a, d === "show" ? "hide" : "show");
                            f[d]()
                        } else f[u]()
                    } else {
                        l = vn.exec(u);
                        c = f.cur();
                        if (l) {
                            h = parseFloat(l[2]);
                            p = l[3] || (s.cssNumber[a] ? "" : "px");
                            if (p !== "px") {
                                s.style(this, a, (h || 1) + p);
                                c = (h || 1) / f.cur() * c;
                                s.style(this, a, c + p)
                            }
                            l[1] && (h = (l[1] === "-=" ? -1 : 1) * h + c);
                            f.custom(c, h, p)
                        } else f.custom(c, u, "")
                    }
                }
                return !0
            }
            var i = s.speed(t, n, r);
            if (s.isEmptyObject(e)) return this.each(i.complete, [!1]);
            e = s.extend({}, e);
            return i.queue === !1 ? this.each(o) : this.queue(i.queue, o)
        },
        stop: function (e, n, r) {
            if (typeof e != "string") {
                r = n;
                n = e;
                e = t
            }
            n && e !== !1 && this.queue(e || "fx", []);
            return this.each(function () {
                function u(e, t, n) {
                    var i = t[n];
                    s.removeData(e, n, !0);
                    i.stop(r)
                }
                var t, n = !1,
                    i = s.timers,
                    o = s._data(this);
                r || s._unmark(!0, this);
                if (e == null) for (t in o) o[t] && o[t].stop && t.indexOf(".run") === t.length - 4 && u(this, o, t);
                else o[t = e + ".run"] && o[t].stop && u(this, o, t);
                for (t = i.length; t--;) if (i[t].elem === this && (e == null || i[t].queue === e)) {
                    r ? i[t](!0) : i[t].saveState();
                    n = !0;
                    i.splice(t, 1)
                }(!r || !n) && s.dequeue(this, e)
            })
        }
    });
    s.each({
        slideDown: En("show", 1),
        slideUp: En("hide", 1),
        slideToggle: En("toggle", 1),
        fadeIn: {
            opacity: "show"
        },
        fadeOut: {
            opacity: "hide"
        },
        fadeToggle: {
            opacity: "toggle"
        }
    }, function (e, t) {
        s.fn[e] = function (e, n, r) {
            return this.animate(t, e, n, r)
        }
    });
    s.extend({
        speed: function (e, t, n) {
            var r = e && typeof e == "object" ? s.extend({}, e) : {
                complete: n || !n && t || s.isFunction(e) && e,
                duration: e,
                easing: n && t || t && !s.isFunction(t) && t
            };
            r.duration = s.fx.off ? 0 : typeof r.duration == "number" ? r.duration : r.duration in s.fx.speeds ? s.fx.speeds[r.duration] : s.fx.speeds._default;
            if (r.queue == null || r.queue === !0) r.queue = "fx";
            r.old = r.complete;
            r.complete = function (e) {
                s.isFunction(r.old) && r.old.call(this);
                r.queue ? s.dequeue(this, r.queue) : e !== !1 && s._unmark(this)
            };
            return r
        },
        easing: {
            linear: function (e, t, n, r) {
                return n + r * e
            },
            swing: function (e, t, n, r) {
                return (-Math.cos(e * Math.PI) / 2 + .5) * r + n
            }
        },
        timers: [],
        fx: function (e, t, n) {
            this.options = t;
            this.elem = e;
            this.prop = n;
            t.orig = t.orig || {}
        }
    });
    s.fx.prototype = {
        update: function () {
            this.options.step && this.options.step.call(this.elem, this.now, this);
            (s.fx.step[this.prop] || s.fx.step._default)(this)
        },
        cur: function () {
            if (this.elem[this.prop] == null || !! this.elem.style && this.elem.style[this.prop] != null) {
                var e, t = s.css(this.elem, this.prop);
                return isNaN(e = parseFloat(t)) ? !t || t === "auto" ? 0 : t : e
            }
            return this.elem[this.prop]
        },
        custom: function (e, n, r) {
            function u(e) {
                return i.step(e)
            }
            var i = this,
                o = s.fx;
            this.startTime = yn || bn();
            this.end = n;
            this.now = this.start = e;
            this.pos = this.state = 0;
            this.unit = r || this.unit || (s.cssNumber[this.prop] ? "" : "px");
            u.queue = this.options.queue;
            u.elem = this.elem;
            u.saveState = function () {
                i.options.hide && s._data(i.elem, "fxshow" + i.prop) === t && s._data(i.elem, "fxshow" + i.prop, i.start)
            };
            u() && s.timers.push(u) && !mn && (mn = setInterval(o.tick, o.interval))
        },
        show: function () {
            var e = s._data(this.elem, "fxshow" + this.prop);
            this.options.orig[this.prop] = e || s.style(this.elem, this.prop);
            this.options.show = !0;
            e !== t ? this.custom(this.cur(), e) : this.custom(this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur());
            s(this.elem).show()
        },
        hide: function () {
            this.options.orig[this.prop] = s._data(this.elem, "fxshow" + this.prop) || s.style(this.elem, this.prop);
            this.options.hide = !0;
            this.custom(this.cur(), 0)
        },
        step: function (e) {
            var t, n, r, i = yn || bn(),
                o = !0,
                u = this.elem,
                a = this.options;
            if (e || i >= a.duration + this.startTime) {
                this.now = this.end;
                this.pos = this.state = 1;
                this.update();
                a.animatedProperties[this.prop] = !0;
                for (t in a.animatedProperties) a.animatedProperties[t] !== !0 && (o = !1);
                if (o) {
                    a.overflow != null && !s.support.shrinkWrapBlocks && s.each(["", "X", "Y"], function (e, t) {
                        u.style["overflow" + t] = a.overflow[e]
                    });
                    a.hide && s(u).hide();
                    if (a.hide || a.show) for (t in a.animatedProperties) {
                        s.style(u, t, a.orig[t]);
                        s.removeData(u, "fxshow" + t, !0);
                        s.removeData(u, "toggle" + t, !0)
                    }
                    r = a.complete;
                    if (r) {
                        a.complete = !1;
                        r.call(u)
                    }
                }
                return !1
            }
            if (a.duration == Infinity) this.now = i;
            else {
                n = i - this.startTime;
                this.state = n / a.duration;
                this.pos = s.easing[a.animatedProperties[this.prop]](this.state, n, 0, 1, a.duration);
                this.now = this.start + (this.end - this.start) * this.pos
            }
            this.update();
            return !0
        }
    };
    s.extend(s.fx, {
        tick: function () {
            var e, t = s.timers,
                n = 0;
            for (; n < t.length; n++) {
                e = t[n];
                !e() && t[n] === e && t.splice(n--, 1)
            }
            t.length || s.fx.stop()
        },
        interval: 13,
        stop: function () {
            clearInterval(mn);
            mn = null
        },
        speeds: {
            slow: 600,
            fast: 200,
            _default: 400
        },
        step: {
            opacity: function (e) {
                s.style(e.elem, "opacity", e.now)
            },
            _default: function (e) {
                e.elem.style && e.elem.style[e.prop] != null ? e.elem.style[e.prop] = e.now + e.unit : e.elem[e.prop] = e.now
            }
        }
    });
    s.each(["width", "height"], function (e, t) {
        s.fx.step[t] = function (e) {
            s.style(e.elem, t, Math.max(0, e.now) + e.unit)
        }
    });
    s.expr && s.expr.filters && (s.expr.filters.animated = function (e) {
        return s.grep(s.timers, function (t) {
            return e === t.elem
        }).length
    });
    var xn = /^t(?:able|d|h)$/i,
        Tn = /^(?:body|html)$/i;
    "getBoundingClientRect" in n.documentElement ? s.fn.offset = function (e) {
        var t = this[0],
            n;
        if (e) return this.each(function (t) {
            s.offset.setOffset(this, e, t)
        });
        if (!t || !t.ownerDocument) return null;
        if (t === t.ownerDocument.body) return s.offset.bodyOffset(t);
        try {
            n = t.getBoundingClientRect()
        } catch (r) {}
        var i = t.ownerDocument,
            o = i.documentElement;
        if (!n || !s.contains(o, t)) return n ? {
            top: n.top,
            left: n.left
        } : {
            top: 0,
            left: 0
        };
        var u = i.body,
            a = Nn(i),
            f = o.clientTop || u.clientTop || 0,
            l = o.clientLeft || u.clientLeft || 0,
            c = a.pageYOffset || s.support.boxModel && o.scrollTop || u.scrollTop,
            h = a.pageXOffset || s.support.boxModel && o.scrollLeft || u.scrollLeft,
            p = n.top + c - f,
            d = n.left + h - l;
        return {
            top: p,
            left: d
        }
    } : s.fn.offset = function (e) {
        var t = this[0];
        if (e) return this.each(function (t) {
            s.offset.setOffset(this, e, t)
        });
        if (!t || !t.ownerDocument) return null;
        if (t === t.ownerDocument.body) return s.offset.bodyOffset(t);
        var n, r = t.offsetParent,
            i = t,
            o = t.ownerDocument,
            u = o.documentElement,
            a = o.body,
            f = o.defaultView,
            l = f ? f.getComputedStyle(t, null) : t.currentStyle,
            c = t.offsetTop,
            h = t.offsetLeft;
        while ((t = t.parentNode) && t !== a && t !== u) {
            if (s.support.fixedPosition && l.position === "fixed") break;
            n = f ? f.getComputedStyle(t, null) : t.currentStyle;
            c -= t.scrollTop;
            h -= t.scrollLeft;
            if (t === r) {
                c += t.offsetTop;
                h += t.offsetLeft;
                if (s.support.doesNotAddBorder && (!s.support.doesAddBorderForTableAndCells || !xn.test(t.nodeName))) {
                    c += parseFloat(n.borderTopWidth) || 0;
                    h += parseFloat(n.borderLeftWidth) || 0
                }
                i = r;
                r = t.offsetParent
            }
            if (s.support.subtractsBorderForOverflowNotVisible && n.overflow !== "visible") {
                c += parseFloat(n.borderTopWidth) || 0;
                h += parseFloat(n.borderLeftWidth) || 0
            }
            l = n
        }
        if (l.position === "relative" || l.position === "static") {
            c += a.offsetTop;
            h += a.offsetLeft
        }
        if (s.support.fixedPosition && l.position === "fixed") {
            c += Math.max(u.scrollTop, a.scrollTop);
            h += Math.max(u.scrollLeft, a.scrollLeft)
        }
        return {
            top: c,
            left: h
        }
    };
    s.offset = {
        bodyOffset: function (e) {
            var t = e.offsetTop,
                n = e.offsetLeft;
            if (s.support.doesNotIncludeMarginInBodyOffset) {
                t += parseFloat(s.css(e, "marginTop")) || 0;
                n += parseFloat(s.css(e, "marginLeft")) || 0
            }
            return {
                top: t,
                left: n
            }
        },
        setOffset: function (e, t, n) {
            var r = s.css(e, "position");
            r === "static" && (e.style.position = "relative");
            var i = s(e),
                o = i.offset(),
                u = s.css(e, "top"),
                a = s.css(e, "left"),
                f = (r === "absolute" || r === "fixed") && s.inArray("auto", [u, a]) > -1,
                l = {}, c = {}, h, p;
            if (f) {
                c = i.position();
                h = c.top;
                p = c.left
            } else {
                h = parseFloat(u) || 0;
                p = parseFloat(a) || 0
            }
            s.isFunction(t) && (t = t.call(e, n, o));
            t.top != null && (l.top = t.top - o.top + h);
            t.left != null && (l.left = t.left - o.left + p);
            "using" in t ? t.using.call(e, l) : i.css(l)
        }
    };
    s.fn.extend({
        position: function () {
            if (!this[0]) return null;
            var e = this[0],
                t = this.offsetParent(),
                n = this.offset(),
                r = Tn.test(t[0].nodeName) ? {
                    top: 0,
                    left: 0
                } : t.offset();
            n.top -= parseFloat(s.css(e, "marginTop")) || 0;
            n.left -= parseFloat(s.css(e, "marginLeft")) || 0;
            r.top += parseFloat(s.css(t[0], "borderTopWidth")) || 0;
            r.left += parseFloat(s.css(t[0], "borderLeftWidth")) || 0;
            return {
                top: n.top - r.top,
                left: n.left - r.left
            }
        },
        offsetParent: function () {
            return this.map(function () {
                var e = this.offsetParent || n.body;
                while (e && !Tn.test(e.nodeName) && s.css(e, "position") === "static") e = e.offsetParent;
                return e
            })
        }
    });
    s.each(["Left", "Top"], function (e, n) {
        var r = "scroll" + n;
        s.fn[r] = function (n) {
            var i, o;
            if (n === t) {
                i = this[0];
                if (!i) return null;
                o = Nn(i);
                return o ? "pageXOffset" in o ? o[e ? "pageYOffset" : "pageXOffset"] : s.support.boxModel && o.document.documentElement[r] || o.document.body[r] : i[r]
            }
            return this.each(function () {
                o = Nn(this);
                o ? o.scrollTo(e ? s(o).scrollLeft() : n, e ? n : s(o).scrollTop()) : this[r] = n
            })
        }
    });
    s.each(["Height", "Width"], function (e, n) {
        var r = n.toLowerCase();
        s.fn["inner" + n] = function () {
            var e = this[0];
            return e ? e.style ? parseFloat(s.css(e, r, "padding")) : this[r]() : null
        };
        s.fn["outer" + n] = function (e) {
            var t = this[0];
            return t ? t.style ? parseFloat(s.css(t, r, e ? "margin" : "border")) : this[r]() : null
        };
        s.fn[r] = function (e) {
            var i = this[0];
            if (!i) return e == null ? null : this;
            if (s.isFunction(e)) return this.each(function (t) {
                var n = s(this);
                n[r](e.call(this, t, n[r]()))
            });
            if (s.isWindow(i)) {
                var o = i.document.documentElement["client" + n],
                    u = i.document.body;
                return i.document.compatMode === "CSS1Compat" && o || u && u["client" + n] || o
            }
            if (i.nodeType === 9) return Math.max(i.documentElement["client" + n], i.body["scroll" + n], i.documentElement["scroll" + n], i.body["offset" + n], i.documentElement["offset" + n]);
            if (e === t) {
                var a = s.css(i, r),
                    f = parseFloat(a);
                return s.isNumeric(f) ? f : a
            }
            return this.css(r, typeof e == "string" ? e : e + "px")
        }
    });
    e.jQuery = e.$ = s;
    typeof define == "function" && define.amd && define.amd.jQuery && define("jquery", [], function () {
        return s
    })
})(window);
(function (e, t, n) {
    var r = t.event,
        i;
    r.special.smartresize = {
        setup: function () {
            t(this).bind("resize", r.special.smartresize.handler)
        },
        teardown: function () {
            t(this).unbind("resize", r.special.smartresize.handler)
        },
        handler: function (e, t) {
            var n = this,
                r = arguments;
            e.type = "smartresize";
            i && clearTimeout(i);
            i = setTimeout(function () {
                jQuery.event.handle.apply(n, r)
            }, t === "execAsap" ? 0 : 100)
        }
    };
    t.fn.smartresize = function (e) {
        return e ? this.bind("smartresize", e) : this.trigger("smartresize", ["execAsap"])
    };
    t.Mason = function (e, n) {
        this.element = t(n);
        this._create(e);
        this._init()
    };
    t.Mason.settings = {
        isResizable: !0,
        isAnimated: !1,
        animationOptions: {
            queue: !1,
            duration: 500
        },
        gutterWidth: 0,
        isRTL: !1,
        isFitWidth: !1,
        containerStyle: {
            position: "relative"
        }
    };
    t.Mason.prototype = {
        _filterFindBricks: function (e) {
            var t = this.options.itemSelector;
            return t ? e.filter(t).add(e.find(t)) : e
        },
        _getBricks: function (e) {
            var t = this._filterFindBricks(e).css({
                position: "absolute"
            }).addClass("masonry-brick");
            return t
        },
        _create: function (n) {
            this.options = t.extend(!0, {}, t.Mason.settings, n);
            this.styleQueue = [];
            var r = this.element[0].style;
            this.originalStyle = {
                height: r.height || ""
            };
            var i = this.options.containerStyle;
            for (var s in i) this.originalStyle[s] = r[s] || "";
            this.element.css(i);
            this.horizontalDirection = this.options.isRTL ? "right" : "left";
            this.offset = {
                x: parseInt(this.element.css("padding-" + this.horizontalDirection), 10),
                y: parseInt(this.element.css("padding-top"), 10)
            };
            this.isFluid = this.options.columnWidth && typeof this.options.columnWidth == "function";
            var o = this;
            setTimeout(function () {
                o.element.addClass("masonry")
            }, 0);
            this.options.isResizable && t(e).bind("smartresize.masonry", function () {
                o.resize()
            });
            this.reloadItems()
        },
        _init: function (e) {
            this._getColumns();
            this._reLayout(e)
        },
        option: function (e, n) {
            t.isPlainObject(e) && (this.options = t.extend(!0, this.options, e))
        },
        layout: function (e, t) {
            for (var n = 0, r = e.length; n < r; n++) this._placeBrick(e[n]);
            var i = {};
            i.height = Math.max.apply(Math, this.colYs);
            if (this.options.isFitWidth) {
                var s = 0,
                    n = this.cols;
                while (--n) {
                    if (this.colYs[n] !== 0) break;
                    s++
                }
                i.width = (this.cols - s) * this.columnWidth - this.options.gutterWidth
            }
            this.styleQueue.push({
                $el: this.element,
                style: i
            });
            var o = this.isLaidOut ? this.options.isAnimated ? "animate" : "css" : "css",
                u = this.options.animationOptions,
                a;
            for (n = 0, r = this.styleQueue.length; n < r; n++) {
                a = this.styleQueue[n];
                a.$el[o](a.style, u)
            }
            this.styleQueue = [];
            t && t.call(e);
            this.isLaidOut = !0
        },
        _getColumns: function () {
            var e = this.options.isFitWidth ? this.element.parent() : this.element,
                t = e.width();
            this.columnWidth = this.isFluid ? this.options.columnWidth(t) : this.options.columnWidth || this.$bricks.outerWidth(!0) || t;
            this.columnWidth += this.options.gutterWidth;
            this.cols = Math.floor((t + this.options.gutterWidth) / this.columnWidth);
            this.cols = Math.max(this.cols, 1)
        },
        _placeBrick: function (e) {
            var n = t(e),
                r, i, s, o, u;
            r = Math.ceil(n.outerWidth(!0) / (this.columnWidth + this.options.gutterWidth));
            r = Math.min(r, this.cols);
            if (r === 1) s = this.colYs;
            else {
                i = this.cols + 1 - r;
                s = [];
                for (u = 0; u < i; u++) {
                    o = this.colYs.slice(u, u + r);
                    s[u] = Math.max.apply(Math, o)
                }
            }
            var a = Math.min.apply(Math, s),
                f = 0;
            for (var l = 0, c = s.length; l < c; l++) if (s[l] === a) {
                f = l;
                break
            }
            var h = {
                top: a + this.offset.y
            };
            h[this.horizontalDirection] = this.columnWidth * f + this.offset.x;
            this.styleQueue.push({
                $el: n,
                style: h
            });
            var p = a + n.outerHeight(!0),
                d = this.cols + 1 - c;
            for (l = 0; l < d; l++) this.colYs[f + l] = p
        },
        resize: function () {
            var e = this.cols;
            this._getColumns();
            (this.isFluid || this.cols !== e) && this._reLayout()
        },
        _reLayout: function (e) {
            var t = this.cols;
            this.colYs = [];
            while (t--) this.colYs.push(0);
            this.layout(this.$bricks, e)
        },
        reloadItems: function () {
            this.$bricks = this._getBricks(this.element.children())
        },
        reload: function (e) {
            this.reloadItems();
            this._init(e)
        },
        appended: function (e, t, n) {
            if (t) {
                this._filterFindBricks(e).css({
                    top: this.element.height()
                });
                var r = this;
                setTimeout(function () {
                    r._appended(e, n)
                }, 1)
            } else this._appended(e, n)
        },
        _appended: function (e, t) {
            var n = this._getBricks(e);
            this.$bricks = this.$bricks.add(n);
            this.layout(n, t)
        },
        remove: function (e) {
            this.$bricks = this.$bricks.not(e);
            e.remove()
        },
        destroy: function () {
            this.$bricks.removeClass("masonry-brick").each(function () {
                this.style.position = "";
                this.style.top = "";
                this.style.left = ""
            });
            var n = this.element[0].style;
            for (var r in this.originalStyle) n[r] = this.originalStyle[r];
            this.element.unbind(".masonry").removeClass("masonry").removeData("masonry");
            t(e).unbind(".masonry")
        }
    };
    t.fn.imagesLoaded = function (e) {
        function u() {
            e.call(n, r)
        }
        function a(e) {
            if (e.target.src !== s && t.inArray(this, o) === -1) {
                o.push(this);
                if (--i <= 0) {
                    setTimeout(u);
                    r.unbind(".imagesLoaded", a)
                }
            }
        }
        var n = this,
            r = n.find("img").add(n.filter("img")),
            i = r.length,
            s = "",
            o = [];
        i || u();
        r.bind("load.imagesLoaded error.imagesLoaded", a).each(function () {
            var e = this.src;
            this.src = s;
            this.src = e
        });
        return n
    };
    var s = function (e) {
        this.console && console.error(e)
    };
    t.fn.masonry = function (e) {
        if (typeof e == "string") {
            var n = Array.prototype.slice.call(arguments, 1);
            this.each(function () {
                var r = t.data(this, "masonry");
                if (!r) {
                    s("cannot call methods on masonry prior to initialization; attempted to call method '" + e + "'");
                    return
                }
                if (!t.isFunction(r[e]) || e.charAt(0) === "_") {
                    s("no such method '" + e + "' for masonry instance");
                    return
                }
                r[e].apply(r, n)
            })
        } else this.each(function () {
            var n = t.data(this, "masonry");
            if (n) {
                n.option(e || {});
                n._init()
            } else t.data(this, "masonry", new t.Mason(e, this))
        });
        return this
    }
})(window, jQuery);
(function (e) {
    e.waitForImages = {
        hasImageProperties: ["backgroundImage", "listStyleImage", "borderImage", "borderCornerImage"]
    };
    e.expr[":"].uncached = function (t) {
        return e(t).is('img[src!=""]') && !t.complete
    };
    e.fn.waitForImages = function (t, n, r) {
        if (e.isPlainObject(arguments[0])) {
            n = t.each;
            r = t.waitForAll;
            t = t.finished
        }
        t = t || e.noop;
        n = n || e.noop;
        r = !! r;
        if (!e.isFunction(t) || !e.isFunction(n)) throw new TypeError("An invalid callback was supplied.");
        return this.each(function () {
            var i = e(this),
                s = [];
            if (r) {
                var o = e.waitForImages.hasImageProperties || [],
                    u = /url\((['"]?)(.*?)\1\)/g;
                i.find("*").each(function () {
                    var t = e(this);
                    t.is("img:uncached") && s.push({
                        src: t.attr("src"),
                        element: t[0]
                    });
                    e.each(o, function (e, n) {
                        var r = t.css(n);
                        if (!r) return !0;
                        var i;
                        while (i = u.exec(r)) s.push({
                            src: i[2],
                            element: t[0]
                        })
                    })
                })
            } else i.find("img:uncached").each(function () {
                s.push({
                    src: this.src,
                    element: this
                })
            });
            var a = s.length,
                f = 0;
            a == 0 && t.call(i[0]);
            e.each(s, function (r, s) {
                var o = new Image;
                e(o).bind("load error", function (e) {
                    f++;
                    n.call(s.element, f, a, e.type == "load");
                    if (f == a) {
                        t.call(i[0]);
                        return !1
                    }
                });
                o.src = s.src
            })
        })
    }
})(jQuery);
(function (e) {
    e.fn.loadPage = function (t, n) {
        var r = {
            current: window.location.pathname
        }, i = {
            before: !1,
            after: !1,
            delay: 0
        }, s = e.extend(i, n),
            o = !1,
            u = !1;
        e(window).bind("popstate", function (e) {
            console.log(e);
            u !== !1 && window.location.reload();
            u = e
        });
        e(this).live("click", function (n) {
            var i = !0,
                u = e(n.currentTarget);
            if (typeof u.attr("href") == "undefined" || u.attr("href").substr(0, 1) == "#") {
                i = !1;
                console.log("fake/named link")
            }
            if (u.attr("href").substr(0, 1) != "/" && u.attr("href").substr(0, 5) != "http:") {
                i = !1;
                console.log("link is not relative and protocol is something different than http")
            }
            if (u.attr("href").substr(0, 1) != "/" && u.attr("href").indexOf(window.location.origin) == -1) {
                i = !1;
                console.log("link is not relative and domain is different")
            }
            if (typeof u.attr("target") != "undefined") {
                i = !1;
                console.log("target is set")
            }
            if (i) {
                n.preventDefault();
                if (u.attr("href") == r.current) console.log("same as current");
                else {
                    r.target = u.attr("href");
                    typeof s.before == "function" && s.before(u);
                    o = setTimeout(function () {
                        e.ajax({
                            url: u.attr("href"),
                            success: function (n) {
                                var i = n.match(new RegExp(/<body(.*?)>/));
                                if (i[1]) {
                                    var o = i[1].match(new RegExp(/id="(.*?)"/)),
                                        a = i[1].match(new RegExp(/class="(.*?)"/));
                                    e("body").attr("id", o[1]).attr("class", a[1])
                                }
                                e.each(t, function (t, r) {
                                    e(r).html(e(n).filter(r).html())
                                });
                                e("title").html(e(n).filter("title").html());
                                typeof Modernizr != "undefined" && Modernizr.history && history.pushState({
                                    href_target: r.target
                                }, "", u.attr("href"));
                                r.current = r.target;
                                typeof s.after == "function" && s.after(u)
                            }
                        })
                    }, s.delay)
                }
            }
        });
        this.updateHref = function (e) {
            r.current = e
        };
        this.getHref = function () {
            return r.current
        };
        return this
    }
})(jQuery);
(function (e) {
    e.fn.spin = function (t, n) {
        var r = {
            tiny: {
                lines: 8,
                length: 2,
                width: 2,
                radius: 3
            },
            small: {
                lines: 8,
                length: 4,
                width: 3,
                radius: 5
            },
            large: {
                lines: 10,
                length: 8,
                width: 4,
                radius: 8
            }
        };
        if (Spinner) return this.each(function () {
            var i = e(this),
                s = i.data();
            if (s.spinner) {
                s.spinner.stop();
                delete s.spinner
            }
            if (t !== !1) {
                if (typeof t == "string") {
                    t in r ? t = r[t] : t = {};
                    n && (t.color = n)
                }
                s.spinner = (new Spinner(e.extend({
                    color: i.css("color")
                }, t))).spin(this)
            }
        });
        throw "Spinner class not available."
    }
})(jQuery);
if (typeof console == "undefined") {
    var console = {};
    console.log = function (e) {
        return
    }
}
var IE = $.browser.msie,
    IE6 = $.browser.msie && $.browser.version.substr(0, 1) == "6",
    IPHONE = navigator.userAgent.toLowerCase().indexOf("iphone") != -1,
    IPAD = navigator.userAgent.toLowerCase().indexOf("ipad") != -1,
    IOS = IPHONE || IPAD;
try {
    Typekit.load()
} catch (e) {}
var App = {};
App.breakpoints = [850, 500];
App.setup = function (e) {
    console.log("App.setup()");
    App.$container = $("#container");
    App.$content = $("#content");
    App.$content_inner = $("#content_inner");
    App.$nav = $("header nav");
    App.$footer = $("footer");
    App.$loading = $("#loading").hide();
    App.$spinner = $("#loading .spinner");
    App.showLoading();
    typeof ProjectIndex == "object" && ProjectIndex.setup();
    typeof ProjectView == "object" && ProjectView.setup();
    typeof PageView == "object" && PageView.setup();
    App.$content.waitForImages(function () {
        App.resize();
        App.hideLoading()
    })
};
App.resize = function () {
    var e = $(window).width(),
        t = 3;
    if (e <= App.breakpoints[0]) var t = 2;
    if (e <= App.breakpoints[1]) var t = 1;
    typeof ProjectIndex == "object" && typeof ProjectIndex.resize == "function" && ProjectIndex.resize(t);
    typeof ProjectView == "object" && typeof ProjectView.resize == "function" && ProjectView.resize(t);
    typeof PageView == "object" && typeof PageView.resize == "function" && PageView.resize(t)
};
App.showLoading = function () {
    App.$spinner.spin({
        lines: 16,
        length: 13,
        width: 2,
        radius: 15,
        color: "black",
        speed: 1,
        trail: 79,
        shadow: !1
    });
    App.$loading.show();
    emile("loading", "opacity:1", {
        duration: 200
    })
};

$(document).ready(function () {
    App.setup();
});

var PageView = {};
PageView.setup = function () {
    console.log("PageView.setup()");
    PageView.$map = $("#gmap");
    PageView.$map.length > 0 && PageView.setupGmap()
};
PageView.setupGmap = function () {
    PageView.latlng = new google.maps.LatLng(52.367714, 4.897924);
    var e = {
        zoom: 15,
        center: PageView.latlng,
        mapTypeId: google.maps.MapTypeId.TERRAIN,
        disableDefaultUI: !0,
        scrollwheel: !1
    };
    PageView.map = new google.maps.Map(document.getElementById("gmap"), e);
    var t = new google.maps.Marker({
        map: PageView.map,
        position: PageView.latlng,
        icon: new google.maps.MarkerImage("/images/marker.png", new google.maps.Size(39, 39), new google.maps.Point(0, 0), new google.maps.Point(20, 20))
    }),
        n = [{
            stylers: [{
                hue: "#006eff"
            }, {
                saturation: -59
            }, {
                visibility: "simplified"
            }, {
                gamma: .77
            }]
        }],
        r = new google.maps.StyledMapType(n, {
            name: "Grayscale"
        });
    PageView.map.mapTypes.set("map", r);
    PageView.map.setMapTypeId("map")
};
PageView.resize = function () {
    PageView.map && PageView.map.setCenter(PageView.latlng)
};
